有没有办法在C#中覆盖返回类型?如果是这样,怎么做,如果不是,为什么,推荐的做事方式是什么?
我的情况是我有一个带有抽象基类及其后代的接口。我想这样做(虽然不行,但是举个例子!):
public interface Animal
{
Poo Excrement { get; }
}
public class AnimalBase
{
public virtual Poo Excrement { get { return new Poo(); } }
}
public class Dog
{
// No override, just return normal poo like normal animal
}
public class Cat
{
public override RadioactivePoo Excrement { get { return new RadioActivePoo(); } }
}
RadioactivePoo当然继承于Poo。
我想为这是为了让那些谁使用Cat对象可以使用Excrement属性,而不必强制转换Poo成RadioactivePoo而例如Cat还可以是部分Animal列表,用户可能不一定知道或关心他们的放射性便便。希望有道理...
据我所知,编译器至少不允许这样做。所以我想这是不可能的。但是您对此有什么建议呢?
相关分类