如何将类型列表输入到泛型类<t> </t>

时间:2013-10-27 05:39:08

标签: c# generics reflection

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

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() );
        }
    }
}

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

1 个答案:

答案 0 :(得分:3)

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

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

由于这些项目会有所不同,您只能将它们存储在List<object>中。