2013-10-21 71 views
2

我有以下静态类传递类型变量作为一般类型参数为静态

public static class MyFoo<T> where T : class 
{ 
    public static IBar<T> Begin() 
    { 
     return new Bar<T>(); 
    } 
} 

在其他地方,我有System.Type的,这是我需要在通过如通用类型参数的变量,理想地:

public void MyFunction(Type type) 
{ 
    MyFoo<type>.Begin(); 
} 

我知道它可能通过反射返回一个MyFoo的实例(如果我使它非静态),但这不会是理想的。无论如何将类型作为泛型类型参数传递给MyFoo静态类?

+1

首先,如果你使它不是静态的,你不需要反射,你可以强制一个无参数的构造函数,在'T'上有一个通用约束。其次,你想在这里解决什么问题?为什么不是T的一个参数MyFunction(它可以推断为你) –

+0

看到这篇文章http://stackoverflow.com/questions/5858591/c-sharp-static-types-cannot-be-used-as-type - 参数 – Sorceri

+0

谢谢你回到我身边。 @BenjaminGruenbaum不幸的是,我不能透露太多,但如果可能的话,这对我来说是最有利的,这样可以为我自己节约很多时间,形成我继承的东西。我将解除这种情况!谢谢。 – EverythingGeek

回答

4

不能这样做。第二个样本中的变量type的值仅在运行时间处已知。第一个样本必须中的T类型参数解析为编译时间。请致电Activator.CreateInstance()

+0

感谢您回复我,我将从非静态版本制作解决方法:) – EverythingGeek

相关问题