使用StructureMap自动装配setter

时间:2012-03-09 13:27:33

标签: c# inversion-of-control structuremap

假设我有以下内容:

public interface IDoStuff 

public class DoerOfStuff : IDoStuff

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

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

  1. 如何引导StructureMap以使Doer中的RandomClass自动连接到DoerOfStuff
  2. 如何使其更具通用性,以便具有IDoStuff属性的任何类都自动装配到DoerOfStuff
  3. 如何让DoerOfStuff成为单身人士?
  4. 提前致谢!

    注意:我认为这对于StructureMap是可行的,所以理想情况下答案会显示出来。如果由于某种原因你知道它不是,请随意展示你如何使用不同的容器。

    干杯,
    -Sean


    编辑:
    以下是我的工作方式:

    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(),我仍然很好奇。

1 个答案:

答案 0 :(得分:0)

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