假设我有以下内容:
public interface IDoStuff
public class DoerOfStuff : IDoStuff
public class RandomClass
{
public IDoStuff Doer {get; set; }
...
}
假设 RandomClass
只有一个默认构造函数(我们希望保持这种状态),我的问题是:
- 我如何引导 StructureMap 以便
RandomClass
中的Doer
自动连接到DoerOfStuff
? - 我怎样才能使它更通用,以便任何具有
IDoStuff
属性的类都自动连接到DoerOfStuff
? - 如何使
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/