0

我的通用类看起来像这样:

public interface IFoo<T> where T : class
{
    IList<T> GetFoo();
}

public class Foo<T> : IFoo<T> where T : class
{
    public IList<T> GetFoo()
    {
       //return something in here
    }
}

我想从程序集中的类型集合中使用该类,如下所示:

public class Bar
{
    public IList<string> GetTheFoo()
    {
        IList<Type> theClass = Assembly.GetExecutingAssembly().GetTypes()
        .Where(t => t.IsClass).ToList();

        var theList = new List<string>();
        foreach (Type theType in theClass)
        {
            //not working...
            theList.Add(new Foo<theType>().GetFoo() );
        }
    }
}

但是编译器不能接受列表中的类型。如何解决这个问题?

4

1 回答 1

3

您可以使用Type.MakeGenericType动态创建所需的类型:

 var item = typeof(Foo<>).MakeGenericType(theType);

由于这些项目都是不同的,因此您只能将它们存储在其中List<object>

于 2013-10-27T05:44:25.470 回答