所以我有一个接口(interface)和类:

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

public class MyClass<T> : IMyInterface<T>
    where T : ISomeEntity {}

我将有一些需要它的类(class):
public class SomeClass : ISomeClass
{
    public SomeClass (IMyInterface<AuditEntity> myInterface) {}
}

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

我只想说:
container.RegisterType(typeof(MyClass<>)).As(typeof(IMyInterface<>));

如果我必须经历并明确执行以下操作,那将会很烦人:
container.RegisterType<MyClass<AuditEntity>>().As<IMyInterface<AuditEntity>>();

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

最佳答案

您必须使用 RegisterGeneric 方法,请参阅 Registration Concepts - Open Generic Components

这样的事情应该有效:

builder.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface<>));

关于c# - Autofac Resolve Open Generic Interface with Open Generic Class,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31588094/

10-13 06:17