C#:覆盖返回类型

有没有办法在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列表,用户可能不一定知道或关心他们的放射性便便。希望有道理...


据我所知,编译器至少不允许这样做。所以我想这是不可能的。但是您对此有什么建议呢?


蛊毒传说
浏览 376回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP