c# - 如何在不指定类型的情况下调用泛型类的静态方法?
问题描述
我有一个通用的类,如下所示:
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()
。有没有办法定义类,使得公共静态方法不需要类型参数?
解决方案
您可以创建一个具有相同名称但没有类型参数的单独类。
请注意,类型参数是类标识的一部分。如果您尝试清除类的所有类型参数化版本中的所有字段,那是不可能的。
推荐阅读
- python-3.x - import eel ModuleNotFoundError: No module named 'eel' but eel is installed
- azure-cosmosdb - 在 Azure Cosmos DB 的 ARRAY_CONTAINS 中使用的索引对象
- chainlink - 是否可以设置作业规范以返回 Chainlink 节点操作员的复杂对象?
- android - OnResponse Android Volley 中的布尔值
- amazon-web-services - AccessDeniedException:CognitoIdentityCredentials 无权执行:chime:GetMessagingSessionEndpoint
- r - 用 R 操作数据表
- c# - 当状态为不成功 ASP.NET API 时,我需要返回 UnAuthorized 或错误代码而不是 null
- asp.net - 尝试从在 WebForms 应用程序中运行的 MVC 5 中的控制器返回视图时出现 ThreadAbortException
- c# - 如何在 c# 和 jquery 中转义特殊字符?
- r - 在 R 中加入两个 ID 列缺失数据的数据集