c# - 在 StructureMap 中有条件地获取实例

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

我有一个接口(interface)IFileSystemStructureEvaluator,它有两个具体实现:NtfsFileSystemStructureEvaluatorFtpFileSystemStructureEvaluator

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

如何在 StructureMap 中实现这一点?

谢谢

最佳答案

您应该查看 Conditional Object construction post杰里米·米勒 (Jeremy Miller) 着。它允许您使用一些条件检查来确定您将获得的实例。这听起来像是您的问题的解决方案。

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

更多可在回程机 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

关于c# - 在 StructureMap 中有条件地获取实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263076/

相关文章:

c# - Serilog、.NET 7、错误 NU1605 ("detected package downgrade")和 Microsoft.NETCore.Targets

.net - Unity 2.0 创建子容器对性能的影响

.net - 如何最好地实现 IoC 注入(inject)组件的按 View 生命周期

c# - TryParse 来自单个时间元素的日期时间

c# - 以编程方式创建文档 Kentico 9

c# - 将数据从 listView (Visual studio, c#) 传输到另一个数据库的语法是什么?

c# - ScreenCaptureJob 类的引用或程序集

.net - NSubstitute的限制是什么,特别是MOQ?

.net - 如何使用JScript更改文本框和标签的文本

asp.net-mvc - 在混合 ASP.NET WebForms MVC 项目中配置 IoC 容器