Autofac使用开放式通用类解析开放式通用接口

Cal*_*ton 3 c# generics autofac

所以我有一个接口和类:

public interface IMyInterface<T> where T : ISomeEntity {}

public class MyClass<T> : IMyInterface<T>
    where T : ISomeEntity {}
Run Code Online (Sandbox Code Playgroud)

我会有一些课程要求它:

public class SomeClass : ISomeClass
{
    public SomeClass (IMyInterface<AuditEntity> myInterface) {}
}
Run Code Online (Sandbox Code Playgroud)

我已经做了各种各样的事情来让它注册开放的通用接口和类没有运气.

我只想说:

container.RegisterType(typeof(MyClass<>)).As(typeof(IMyInterface<>));
Run Code Online (Sandbox Code Playgroud)

如果我必须通过并明确地执行以下操作,那将是令人讨厌的:

container.RegisterType<MyClass<AuditEntity>>().As<IMyInterface<AuditEntity>>();
Run Code Online (Sandbox Code Playgroud)

这不应该是微不足道的吗?

Cyr*_*and 7

您必须使用该RegisterGeneric方法,请参阅注册概念 - 打开通用组件

这样的东西应该有效:

builder.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface<>)); 
Run Code Online (Sandbox Code Playgroud)