所以我有一个接口和类:
public interface IMyInterface<T> where T : ISomeEntity {}
public class MyClass<T> : IMyInterface<T>
where T : ISomeEntity {}我会有一些课要求它:
public class SomeClass : ISomeClass
{
public SomeClass (IMyInterface<AuditEntity> myInterface) {}
}我已经做了各种各样的事情,让它注册开放的通用接口和类,没有运气。
我只想说:
container.RegisterType(typeof(MyClass<>)).As(typeof(IMyInterface<>));如果我不得不直截了当地做这样的事情,那就太烦人了:
container.RegisterType<MyClass<AuditEntity>>().As<IMyInterface<AuditEntity>>();这不应该是微不足道的吗?
发布于 2015-07-23 13:04:28
您必须使用RegisterGeneric方法(参见注册概念.开放通用组件 )
像这样的东西应该能起作用:
builder.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface<>)); 发布于 2015-07-23 13:04:21
是的,对于container.RegisterGeneric来说,这是微不足道的:
container.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface <>));您似乎还在问题中的示例中切换了您的接口和类。注册应该从要注册的类型(例如MyClass)开始,然后是您要注册的类型(例如IMyInterface)。
https://stackoverflow.com/questions/31588094
复制相似问题