繁体   English   中英

在 StructureMap 中有条件地获取实例

[英]Get instance conditionally in StructureMap

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

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

如何在 StructureMap 中实现这一点?

谢谢

您应该查看 Jeremy Miller 的Conditional Object 构造帖子 它允许您使用一些条件检查来确定您将获得的实例。 这听起来像是您问题的解决方案。

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

下面的编辑

在 StructureMap 用户列表上有几个关于进行条件构造的问题(即,如果满足此条件,则返回此对象,否则返回此其他对象)。 为了满足这种明显的需求,StructureMap 2.5.2 引入了新的 ConditionalInstance,它允许用户基于 Predicate 布尔测试有效地切换活动实例。 这是使用 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-结构图即乐趣与 lambdas.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM