Autofac:打开泛型和基本接口



给定以下接口和类,在Autofac中是否有办法

  • 为所有具有ProviderAttribute的类注册一个Provider<T>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)
    {
        //...
    }
}

我想出了一个粗略的解决方案:

var types = GetProviderTypes();
foreach (var type in types)
{
    var t = typeof (Provider<>).MakeGenericType(type);
    builder.RegisterType(t).As<IProviderBase>();
}

相关内容

  • 没有找到相关文章

最新更新