c# - 使用 StructureMap 的 Autowiring 器

标签 c# inversion-of-control structuremap

假设我有以下内容:

public interface IDoStuff 

public class DoerOfStuff : IDoStuff

public class RandomClass
{
    public IDoStuff Doer {get; set; }
    ...
}

假设 RandomClass 只有一个默认构造函数(我们希望保持这种状态),我的问题是:

  1. 我如何引导 StructureMap 以便 RandomClass 中的 Doer 自动连接到 DoerOfStuff
  2. 我怎样才能使它更通用,以便任何具有 IDoStuff 属性的类都自动连接到 DoerOfStuff
  3. 如何使 DoerOfStuff 成为单例?

提前致谢!

注意:我假设这可以通过 StructureMap 实现,因此理想情况下答案会显示这一点。如果出于某种原因您知道它不是,请随时展示您将如何使用不同的容器。

干杯,
-肖恩


编辑:
这是我如何让它工作的:

ObjectFactory.Initialize(x =>
{
    x.For<IDoStuff>().Singleton().Use<DoerOfStuff>();
    x.SetAllProperties(policy => policy.TypeMatches(type => type == typeof(IDoStuff)));
    // this works too
    // x.FillAllPropertiesOfType<IDoStuff>();
});

但无论哪种情况,只有在我还添加以下内容时才有效:

public RandomClass()
{
    ObjectFactory.BuildUp(this);
}

我仍然很好奇我是否可以以某种方式跳过 BuildUp()

最佳答案

new Container(x => {
 x.For<IDoStuff>().Singleton().Use<DoerOfStuff>();
 x. FillAllPropertiesOfType<IDoStuff>();
})

关于c# - 使用 StructureMap 的 Autowiring 器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634808/

相关文章:

java - lambda 中的控制反转

dependency-injection - 使用结构图 2.6 注入(inject)通用参数

structuremap - ASP.NET WebApi 操作过滤器和依赖范围

c# - SQL:如何在添加额外条目的同时将列移动到另一个表中?

c# - 访问 token Google+

inversion-of-control - 如何使用 Simple Injector 将参数传递给构造函数?

c# - 没有服务定位器的 IOC

asp.net-mvc-4 - 处理注入(inject)的 HttpClient

c# - 如何在 xaml 中填充宽度的窗口中绘制一条线

c# - 如何在 VS.NET 2015 中切换上下文?