【问题标题】:Passing Type parameter to generic in C# [duplicate]在C#中将类型参数传递给泛型[重复]
【发布时间】:2014-10-04 10:49:28
【问题描述】:

我有一个泛型类ValueCriterion,它采用另一个类类型作为参数。以下代码工作正常。

new ValueCriterion<,CrashDetected>(0));

CrashDetected 是一个类。

但是当我使用下面的代码获取CrashDetected 类的类型时。

Type myType = Type.GetType("NetworkDB." + "CrashDetected");

并将myType 传递给ValueCriterion,编译器给出以下错误:

new ValueCriterion<,myType>(0));

错误 1 ​​使用泛型类型需要 1 个类型参数。

我将非常感谢任何帮助。

【问题讨论】:

    标签: c# generics


    【解决方案1】:

    您可以使用MakeGenericType 方法使用Type 实例创建泛型类型:

    var type = typeof(ValueCriterion<>).MakeGenericType(myType);
    
    var instance = Activator.CreateInstance(type, 0);
    

    【讨论】:

    • Selman22... 你太棒了。我的问题现在解决了一半。所以我可以创建对象并传递它们。如果我需要将类型作为参数传递呢 Execution.Wait
    • @Tom 你应该得到泛型方法 Wait with Reflection 然后使用 MakeGenericMethod 并传递类型。
    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多