在没有泛型的情况下返回未知类型

时间:2017-05-15 13:29:47

标签: c# generics

在我的抽象基类AbstractType中,我有一个未知类型的抽象自动实现属性Value。我的所有派生类都使用自己的类型实现此属性,例如stringdouble。通常情况下,我知道你只需要AbstractType<T>并将属性设为T Value { ... }。但是,在这种情况下,我没有能力使用泛型。在AbstractType中,我尝试实现一个从AbstractType返回新派生类的方法,因此如果我使用泛型,则调用者必须知道该类型。如果我使Value类型object,则调用者必须将对象包装到正确的类型 - 非常不方便的类型/实例检查。

这是我的类结构的样子(为了演示而简化了方法):

abstract class AbstractType
{
    public abstract ??? Value { get; set; }

    AbstractType FromValue(int i)
    {
        if (i == 0)
            return new NumberType();
        else
            return new StringType();
    }
}

class NumberType : AbstractType
{
    public override double Value { get; set; }
}

class StringType : AbstractType
{
    public override string Value { get; set; }
}

有没有办法在不使用泛型的情况下执行此操作?

0 个答案:

没有答案