StructureMap IOC 有问题。我希望检索基于标签或名称实现相同接口(interface)的对象的不同具体实现。
internal static class InstanceHelper
{
internal enum Taxonomy
{
Foo,
Bar
}
static InstanceHelper()
{
// Initialize the container
ObjectFactory.Initialize(x =>
{
x.For<IMyInterface>().Use<ObjectA>().Named(Taxonomy.Foo.ToString());
x.For<IMyInterface>().Use<ObjectB>().Named(Taxonomy.Bar.ToString());
});
}
internal static IMyInterface GetInstanceByTaxonomy(Taxonomy taxonomy)
{
// this raises an exception
ObjectFactory.GetNamedInstance<IMyInterface>(taxonomy.ToString());
}
}
在这方面的文档不是很好,似乎所有的例子都被弃用了......使用版本 2.6.1.0
谢谢。
最佳答案
您使用 AddInstances
方法添加您的命名实例
ObjectFactory.Initialize(x =>
{
x.For<IMyInterface>().AddInstances(i =>
{
i.Type<ObjectA>().Named("Foo");
i.Type<ObjectB>().Named("Bar");
});
});
这对我有用,但我同意文档有时会在版本之间产生误导,我花了一些时间才第一次了解这一点。
关于c# - StructureMap IOC 命名实例帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785737/