鉴于以下接口和类,Autofac中是否有一种方法
Provider<T>
的课程注册ProviderAttribute
,其中T
是此类的类型(想想注册开放式泛型并使用Autofac的MakeGenericType()
解析它们)IEnumerable<IProviderBase>
到其他类的构造函数概述:
public class ProviderAttribute : Attribute { }
public interface IProviderBase
{
Type Type { get; }
}
public interface IProvider<T> : IProviderBase
{
DoSomething(T t);
}
public class Provider<T> : IProvider<T>
{
public Type Type
{
get { return typeof (T); }
}
public DoSomething(T t)
{
//...
}
}
答案 0 :(得分:0)
我想出了一个粗糙的解决方案:
var types = GetProviderTypes();
foreach (var type in types)
{
var t = typeof (Provider<>).MakeGenericType(type);
builder.RegisterType(t).As<IProviderBase>();
}