【发布时间】:2019-01-21 11:37:02
【问题描述】:
下面是我想要实现的目标。使用代码 sn-p 更容易显示。
abstract class MyBaseType {}
class MyType1: MyBaseType() {}
class MyType2: MyBaseType() {}
class MyType3: MyBaseType() {}
public class Utils()
{
public XXXX IdentifyCorrectType()
{
var identifyingCondition = GetCorrectType();// returns 1,2,3...
switch(identifyingCondition)
{
case 1:
return typeof(MyType1);break;
case 2:
return typeof(MyType2);break;
case 3:
return typeof(MyType3);break;
}
}
}
IdentifyCorrectType方法声明中的XXXX应该写什么来编译这段代码?返回值在其他地方用于实例化该类型,因此该方法只需要返回正确的类型。
PS:返回所需类的对象(例如new MyType2())而不是类型是不可能的,因为类依赖项并非总是随处可用。
【问题讨论】:
-
所以你的问题是关于如何使用
System.Type。 Edit 澄清这一点。 -
我怀疑这可能是(部分)在使用泛型时尝试避免使用编译时类型指定类型参数的错误方法。它永远不会结束
-
为什么需要
GetCorrectType来返回一个数字?只从该方法返回Type,而不是使用case 语句返回这个额外的方法不是更简单吗?此外,break;是多余的,因为您已经在每个case中使用了return。 -
这看起来不是很糟糕,而且它肯定不是泛型。好吧,至少三分之一的标签是正确的......
-
这感觉像是一个 XY 问题 - meta.stackexchange.com/questions/66377/what-is-the-xy-problem。 为什么你想这样做?退后一步,展示一个更完整的示例,展示您认为这将如何帮助您。换句话说,消费
IdentifyCorrectType的代码是什么样的?