![](/img/trans.png)
[英]StructureMap: conditionally use concrete type based on concrete instance property value
[英]Get instance conditionally in StructureMap
我有一个接口IFileSystemStructureEvaluator有两个具体实现: NtfsFileSystemStructureEvaluator和FtpFileSystemStructureEvaluator 。
我希望能够根据传递给构造函数的 Uri 是否是 FTP uri 的文件 uri 来请求适当的IFileSystemStructureEvaluator 。
如何在 StructureMap 中实现这一点?
谢谢
您应该查看 Jeremy Miller 的Conditional Object 构造帖子。 它允许您使用一些条件检查来确定您将获得的实例。 这听起来像是您问题的解决方案。
下面的编辑
在 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");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.