我有一种情况,我需要从一个开放的泛型基类中按名称获取具体类。StructureMap open generic
我的类层次结构:
public class Foo { }
public class Bar { }
public abstract class OpenGenericBaseClass<T> where T : class { }
public class ConcreteClass1 : OpenGenericBaseClass<Foo> { }
public class ConcreteClass2 : OpenGenericBaseClass<Bar> { }
我的注册代码:
For(typeof(OpenGenericBaseClass<>)).Use(x => x.GetInstance<ConcreteClass1>());
For(typeof(OpenGenericBaseClass<>)).Add(x => x.GetInstance<ConcreteClass2>()).Named("Class2");
我的程序代码:
ObjectFactory.Configure(
x => x.Configure(
a => a.Scan(
b =>
{
b.AssembliesFromApplicationBaseDirectory();
b.LookForRegistries();
})));
var c1 = ObjectFactory.GetInstance(typeof(OpenGenericBaseClass<>));
var c2 = ObjectFactory.GetNamedInstance(typeof(OpenGenericBaseClass<>), "Class2");
到的GetInstance方法(C1)的第一次调用返回的好“ConcreteClass1”对象。 然而对第二个呼叫(对于C2)我得到一个异常: StructureMap异常代码:200找不到名为“等级2”为PluginType TestStructureMapGeneric.OpenGenericBaseClass`1一个实例
我怎样才能让我的C2命名具体实例?
感谢您的帮助。
嗨@Nekresh,我正在使用开放的泛型基类来p使用虚拟方法来帮助我用不同的对象类型组织工作流。我不能使用简单的基类,因为我失去了共享泛型行为的好处。 – klettier