StructureMap IOC命名实例帮助

遇到StructureMap IOC的问题。我希望检索基于标签或名称实现相同接口的对象的不同具体实现。
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");
    });
});
这对我有用,但是我同意文档有时会在版本之间产生误导,我花了一段时间才第一次看到它。     
原始方式和amarsuperstar的方式似乎实际上都有效,问题是类'ObjectA'的范围已被声明为内部,以及内部构造函数。我将其更改为Public,现在IOC可以看到它...反向反射在StructureMap程序集中发生。 Doh傻傻的我。     

要回复问题请先登录注册