代码之家  ›  专栏  ›  技术社区  ›  Arnold Zokas

在StructureMap中有条件地获取实例

  •  6
  • Arnold Zokas  · 技术社区  · 15 年前

    我有一个接口 有两个具体实现: NtfsFileSystemStructureEvaluator .

    我希望能够请求适当的 IFilessystemaluator 取决于传递给构造函数的Uri是否是FTP Uri的文件Uri。

    如何在StructureMap中实现这一点?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Eric Herlitz    4 年前

    你应该去看看报纸 Conditional Object construction post

    http://codebetter.com/blogs/jeremy.miller/archive/2009/01/18/conditional-object-construction-in-structuremap-i-e-fun-with-lambdas.aspx

    下面编辑

    StructureMap用户列表中有几个关于执行条件构造的问题(即,如果是此条件,则返回此对象,否则返回此其他对象)。为了满足这种明显的需求,StructureMap 2.5.2引入了新的ConditionalInstance,允许用户基于谓词布尔测试有效地切换活动实例。下面是一个使用InstanceExpression的新条件()语法的快速示例:

    var container = new Container(x =>
    {
        x.InstanceOf<Rule>().Is.Conditional(o =>
        {
            o.If(c => false).ThenIt.Is.OfConcreteType<ARule>();
            o.If(c => true).ThenIt.IsThis(GREEN);
            o.TheDefault.IsThis(RED);
        }).WithName("conditional");
    });
    

    更多信息请访问wayback机器 https://web.archive.org/web/20090506031557/http://codebetter.com/blogs/jeremy.miller/archive/2009/01/18/conditional-object-construction-in-structuremap-i-e-fun-with-lambdas.aspx