Вот что я пытаюсь достичь ниже. Это легче показать с помощью фрагмента кода.
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;
}
}
}
Что должно быть написано вместо XXXX в объявлении IdentifyCorrectType метод для этого кода для компиляции? Возвращаемое значение используется где-то еще для создания экземпляра этого типа, поэтому из этого метода нужно возвращать только правильный тип.
PS: Возврат объектов желаемых классов (например, new MyType2()
) вместо типов невозможен из-за зависимостей классов, которые не всегда доступны везде.