以下是我要实现的目标。使用代码段更容易显示。
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()
)而不是类型的对象。
答案 0 :(得分:2)
修改1: 根据{{1}},按照评论的更好方法应该是:
@Cid
您可以将Type class用作IdentifyCorrectType方法的输出:
public MyBaseType IdentifyCorrectType()
{
var identifyingCondition = GetCorrectType();// returns 1,2,3...
switch (identifyingCondition)
{
case 1:
return new MyType1();
case 2:
return new MyType2();
case 3:
return new MyType3();
default:
return null;
}
}