【问题标题】:Get instance conditionally in StructureMap在 StructureMap 中有条件地获取实例
【发布时间】:2009-08-11 21:36:42
【问题描述】:

我有一个接口 IFileSystemStructureEvaluator 有两个具体实现:NtfsFileSystemStructureEvaluatorFtpFileSystemStructureEvaluator

我希望能够根据传递给构造函数的 Uri 是否是 FTP uri 的文件 uri 来请求适当的 IFileSystemStructureEvaluator

如何在 StructureMap 中实现这一点?

谢谢

【问题讨论】:

    标签: c# .net inversion-of-control structuremap


    【解决方案1】:

    您应该查看 Jeremy Miller 的 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,它允许用户根据 Predicate 布尔测试有效地切换活动的 Instance。下面是一个使用 InstanceExpression 的新 Conditional() 语法的快速示例:

    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");
    });
    

    更多可在返程机上找到 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

    【讨论】:

    • 似乎没有办法访问构造函数参数。那好吧。无论如何 - 感谢您的意见。
    • 如果他在几年后破坏 API 时更新了他的帖子会很有帮助:(
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多