c# - Autofac 使用开放通用类解析开放通用接口(interface)

标签 c# generics autofac

所以我有一个接口(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 使用开放通用类解析开放通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588094/

相关文章:

c# - 使用 Autofac 将对象注入(inject) MassTransit Saga

c# - 如何在C#中从SQL Server获得唯一值

C# 防止在不使用 Enabled=false 的情况下点击表单

c# - C# 中 == 运算符和 Equals() 方法的区别?

c# - 制定通用和特定的 stub 方法?

wcf - Entity Framework 消耗大量内存(可能是内存泄漏?)

java - 为什么 List<String> 接受另一个 <List> 作为元素

c++ - unreachable-code 在 C++11 中,这可能是什么原因造成的?

java - 使用 Java 泛型错误

autofac - Autofac 中的 Lazy<T> 支持发生了什么?