c# - 调用类型参数的方法

标签 c# generics type-parameter

有没有什么办法可以这样写代码:

class GenericClass<T>
{
    void functionA()
    {
        T.A();
    }
}

或者,如何调用类型参数的函数(类型是我的自定义类)。

最佳答案

回复:

T.A();

你不能调用类型参数的静态方法,如果那是你的意思的话。您最好将其重构为 T 的实例方法,也许使用通用约束(where T : SomeTypeOrInterface,使用 SomeTypeOrInterface 定义 A())。另一种选择是 dynamic,它允许鸭子类型的实例方法(通过签名)。

如果您的意思是 T 仅在运行时已知(作为 Type),那么您需要:

typeof(GenericClass<>).MakeGenericType(type).GetMethod(...).Invoke(...);

关于c# - 调用类型参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360661/

相关文章:

c# - String.Empty 和 string.Empty 的区别

c++ - 为什么这个模板扩展在 C++ 中是合法的?

c# - wpf中带有复选框通用控件的多选组合框

c# - CSV 换行符

c# - 使用 SqlDataReader 从联接表中获取值

C# Lazy <T> & 竞速初始化?

c# - 应用约束的通用错误

haskell - 函数组合中的类型推导

Scala:通配符(类型参数)和集合的编译错误: "you may wish to investigate a wildcard type as"

java - 如何在 Scala 中扩展包含泛型方法的 Java 接口(interface)?