在我的抽象基类AbstractType
中,我有一个未知类型的抽象自动实现属性Value
。我的所有派生类都使用自己的类型实现此属性,例如string
或double
。通常情况下,我知道你只需要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; }
}
有没有办法在不使用泛型的情况下执行此操作?