C# 根据运行时变量的类型创建泛型类
根据运行时变量的类型,是否可以创建类型为C# 根据运行时变量的类型创建泛型类,c#,generics,C#,Generics,根据运行时变量的类型,是否可以创建类型为T的类的实例 例如: var myType = myVariable.GetType(); var myTestClass = new TestClass<myType>(); var myType=myVariable.GetType(); var myTestClass=newtestclass(); 这将不会编译,但希望显示我正在努力实现的目标 有办法吗 编辑 假设课堂是这样的: public class TestClass<
T
的类的实例
例如:
var myType = myVariable.GetType();
var myTestClass = new TestClass<myType>();
var myType=myVariable.GetType();
var myTestClass=newtestclass();
这将不会编译,但希望显示我正在努力实现的目标
有办法吗
编辑
假设课堂是这样的:
public class TestClass<T>
{
public string StringValue
{
get
{
return this.TypeValue == null ? string.Empty : this.TypeValue.ToString();
}
}
public T TypeValue { get; set; }
}
公共类TestClass
{
公共字符串字符串值
{
收到
{
返回this.TypeValue==null?string.Empty:this.TypeValue.ToString();
}
}
公共T类型值{get;set;}
}
如果我这样做:
var test1=TestClass((动态)x);//x是一个整数
我可以设置像test1.TypedValue=10
如果我这样做:
var test2=TestClass((动态)y);//y是一个布尔值
我可以设置像test2.TypedValue=true
目前我得到一个错误声明
无法隐式地将int类型转换为TestClass(或将bool转换为teClass)
是的,但您必须使用反射:
object myTestClass = Activator.CreateInstance(
typeof(TestClass<>).MakeGenericType(myType));
是的,但您必须使用反射:
object myTestClass = Activator.CreateInstance(
typeof(TestClass<>).MakeGenericType(myType));
+1.因为作弊。。evilishly@quetzalcoatl事实上,我确实把电话搞砸了;固定在edit@davy如果
myVariable
是int
,那么什么是myProp
?什么声明了myProp?因为它显然不是int
。@davy不,不是真的;一个实际的例子真的会help@Marc-我编辑了这个问题。如果需要,很高兴进一步澄清。作弊+1。。evilishly@quetzalcoatl事实上,我确实把电话搞砸了;固定在edit@davy如果myVariable
是int
,那么什么是myProp
?什么声明了myProp?因为它显然不是int
。@davy不,不是真的;一个实际的例子真的会help@Marc-我编辑了这个问题。如有需要,欢迎进一步澄清。
Evil((dynamic)myVariable);
...
void Evil<T>(T val)
{
var myTestClass = new TestClass<T>();
//...
}