如何在不指定类型的情况下在泛型类上调用静态方法?

时间:2019-05-20 21:12:37

标签: c# .net generics

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

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()。有什么方法可以定义类,以使公共静态方法不需要类型参数?

1 个答案:

答案 0 :(得分:0)

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

请注意,类型参数是类标识的一部分。如果您要清除类的所有类型参数化版本中的所有字段,则不可能直接这样做。