首页 > 解决方案 > 如何在不指定类型的情况下调用泛型类的静态方法?

问题描述

我有一个通用的类,如下所示:

public class MyClass<T>
{
     public void SetValue(T value){...}
     public T GetValue(){...}
     public static void ClearAll(){...}
}

我想不时调用静态方法。理想情况下,类似:

MyClass.Clear();

编译器抱怨说

使用泛型类型“MyClass”需要 1 个类型参数。

我可以这样称呼它:

MyClass<object>.Clear();

我觉得额外<object>的代码不必要地混乱。但是,我不能简单地<T>从类声明中删除 ,因为无法从方法T中的用法中推断出来GetValue()。有没有办法定义类,使得公共静态方法不需要类型参数?

标签: c#.netgenerics

解决方案


您可以创建一个具有相同名称但没有类型参数的单独类。

请注意,类型参数是类标识的一部分。如果您尝试清除类的所有类型参数化版本中的所有字段,那是不可能的。


推荐阅读