0

给定以下接口和类,Autofac 中有没有办法

  • Provider<T>为所有具有 a 的类ProviderAttribute注册aT作为此类的类型(考虑注册开放泛型并使用 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)
    {
        //...
    }
}
4

1 回答 1

0

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

var types = GetProviderTypes();

foreach (var type in types)
{
    var t = typeof (Provider<>).MakeGenericType(type);
    builder.RegisterType(t).As<IProviderBase>();
}
于 2013-10-31T14:39:36.403 回答