c# - 定义一个“类型”类型的变量,它只接受作为特定类型的子类的类型
问题描述
我正在使用 C#,我的代码中有以下方法:
public void Test(System.Type type) {...}
但我希望变量 'type' 代表一个必须是 class 子类的类型MyClass
。为了清楚起见,我不希望“类型”本身成为一个子类,MyClass
因为它应该代表一种类型。例如,Test(typeof(int))
不应允许调用,因为 'int' 不是MyClass
.
在 C# 中可能吗?
更新: 我花了很长时间试图在网上找到解决方案后问了这个问题,但事实证明之前已经问过这个问题:C#: Restricting Types in method parameters (not generic parameters),我错过了。太糟糕了,即使该线程中的答案似乎也无法正确解决问题。
更新 2: 事实证明(请参阅此问题的解决方案),可以使用泛型而不是将参数传递给方法,而且它似乎工作得很好。
解决方案
为此,您可以使用带有约束的泛型:
public void Test<T>() where T : MyClass
{
var type = typeof(T);
// ...
}
推荐阅读
- c# - 具有可定义列的 WPF Datagrid UserControl
- netsuite - NetSuite CASE WHEN 不工作,即使所有单独的语句都有效
- python-3.x - 有没有办法从 rpy2 >= 3.0.0 中的 R 向量、矩阵等返回名称
- deep-learning - 具有多个输入的 PyTorch Experience Replay
- javascript - Topojson沿海省份
- ansible - 何时评估 with_items 内的值列表的条件
- javascript - Electron 与 Vue.js,不使用样板
- asp.net - 从 ApplicationUser 继承返回 null
- r - 使用 grepl 进行双 for 循环过滤数据帧
- ecmascript-6 - 解构时可空嵌套对象上的 ES6 默认参数