我有一个接口(interface)IFileSystemStructureEvaluator,它有两个具体实现:NtfsFileSystemStructureEvaluator 和FtpFileSystemStructureEvaluator。
我希望能够根据传递给构造函数的 Uri 是否是 FTP uri 的文件 uri 来请求适当的 IFileSystemStructureEvaluator。
如何在 StructureMap 中实现这一点?
谢谢
最佳答案
您应该查看 Conditional Object construction post杰里米·米勒 (Jeremy Miller) 着。它允许您使用一些条件检查来确定您将获得的实例。这听起来像是您的问题的解决方案。
编辑如下
在 StructureMap 用户列表中有几个关于进行条件构造的问题(即,如果这个条件返回这个对象,否则返回另一个对象)。为了满足这种明显的需求,StructureMap 2.5.2 引入了新的 ConditionalInstance,它允许用户根据 Predicate bool 测试有效地切换事件实例。下面是使用 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");
});
关于c# - 在 StructureMap 中有条件地获取实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263076/