【发布时间】:2021-11-09 21:49:21
【问题描述】:
关于如何在旧版本的 C# 中打开类型有很多答案。我的问题与如何打开泛型方法中调用的类型有关:
public T GetAxis<T>(object axisObject)
{
switch (typeof(T))
{
case Axis:
//...do something
break;
}
return null;
}
我收到一条错误消息:
case Axis axis:
错误是:
“System.Type”类型的表达式无法由“MyNamespace.Axis”类型的模式处理。
我相信我的问题是如何在 规范中调用类型,以便我可以打开它。
【问题讨论】:
-
好吧,老实说:如果您打开 T,它并不是真正的通用 - 但是:
if (typeof(T) == typeof(Axis)) {...}也许?或者创建一个字典,将Type映射到一些预期类型的枚举,然后打开它? -
您是真正尝试打开通用
T,还是尝试打开axisObject的类型? -
您为什么要这样做?真的
do something应该由那个类型定义,所以你可以只约束T来实现一个方法void DoSomething()
标签: c# reflection switch-statement c#-10.0