Autofac使用开放式通用类解析开放式通用接口
所以我有一个接口和类:
public interface IMyInterface where T : ISomeEntity {} public class MyClass : IMyInterface where T : ISomeEntity {}
我会有一些课程要求它:
public class SomeClass : ISomeClass { public SomeClass (IMyInterface myInterface) {} }
我已经做了各种各样的事情来让它注册开放的通用接口和类没有运气。
我只想说:
container.RegisterType(typeof(MyClass)).As(typeof(IMyInterface));
如果我必须经历并明确地执行以下操作,那将是令人讨厌的:
container.RegisterType<MyClass>().As<IMyInterface>();
这不应该是微不足道的吗?
您必须使用RegisterGeneric
方法,请参阅注册概念 – 打开通用组件
这样的东西应该有效:
builder.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface<>));
是的,对于container.RegisterGeneric来说是微不足道的:
container.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface <>));
您似乎也在您的问题的示例中切换了您的界面和类。 注册应该从想要注册的类型(例如MyClass)开始,然后是要注册的类型(例如IMyInterface)。