如何将我的参数转换为正确的类型声明。 IE浏览器。如何在以下
中从type
转到T
class Foo<T>
{
Foo<??> MakeFoo(Type type)
{
return new Foo<??>();
}
Void Get(T aFoo)
{
...
}
}
答案 0 :(得分:5)
你不能。
通用参数由编译器使用和应用,而Type
是Reflection的一部分,旨在在运行时使用类型信息。因此,如果只有System.Type
,则无法定义应使用哪种类型的编译器。
但是你可以做相反的事情:
public void Foo<T>()
{
Type t = typeof(T);
}
因此,如果您确实不需要使用Type
作为参数,则可以执行以下操作:
Foo<FooParam> MakeFoo<FooParam>()
{
return new Foo<FooParam>();
}
答案 1 :(得分:2)
你无法做到这一点,因为“Type”是一组反映的元数据 类,结构和/或枚举。
“T”是类型。
您可以使用反射将类型作为参数提供:
type.MakeGenericType(type).GetConstructor(Type.EmptyTypes).Invoke(null)
但我会投票添加一个通用参数“S”而不是输入参数“Type type” 避免使用反射,如果你这样做就没用了!