Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据运行时变量的类型创建泛型类_C#_Generics - Fatal编程技术网

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