c# - 泛型参数是否有等效的“this”
问题描述
伪代码:
class A
{
static A()
{
SomeGenericMethod<THISCLASS, U>(); // THISCLASS = A
}
}
class B
{
static B()
{
SomeGenericMethod<THISCLASS, V>(); // THISCLASS = B
}
}
是否有任何语言构造(由上述伪代码中的 THISCLASS 表示)静态评估泛型实例化的类?
它可能看起来不多,但如果我必须重复上面的通用实例化,比如 20 个类,那么每次都必须用相应的 A 替换 THISCLASS 是另一个错误来源。
解决方案
Type t = MethodBase.GetCurrentMethod().DeclaringType;
将使您在静态方法/构造函数中获得当前类型。之后,您可以获取方法信息SomeGenericMethod
并使用MakeGenericMethod以及在调用它之前需要的任何其他类型参数来调用它。
推荐阅读
- python - 为什么使用 Python 读取 .txt 文件会导致控制台出现空白行?
- c# - 如何获取输入到 TextBox 中的信息?
- youtube-api - YouTube 直播 API:LiveChatMessages userBannedEvent 未显示
- reactjs - TypeError:firebase.INTERNAL.registerComponent 不是 configureForFirebase 的函数
- python - 从数字列表中格式化字符串
- python-3.x - 设置为 50-50 的 train_test_split 返回高准确度,但在 2 个文件中分离时返回低
- c# - 在实体框架 6 的 where 子句中添加日期和时间列
- javascript - 按地图内数组项内的对象对对象数组进行排序
- c# - Blazor 组件:通知导致线程冲突的集合更改事件
- python - numpy:有效地获取由另一个数组的元素分组的数组元素的统计信息