我不太清楚如何问这个问题,但基本上我想要做的是访问来自IDog的抽象方法。考虑到这一点:
static void Main(string[] args)
{
IDog dog = new Dog();
dog.CatchFrisbee();
dog.Speak("Bark") // error -> no implementation
Console.ReadLine();
}
public class Dog : Animal, IDog
{
public void CatchFrisbee()
{
Console.WriteLine("Dog Catching Frisbee");
}
}
public abstract class Animal : IAnimal
{
public void Speak(string sayWhat)
{
Console.WriteLine(sayWhat);
}
public void Die()
{
Console.WriteLine("No Longer Exists");
}
}
public interface IDog
{
void CatchFrisbee();
}
public interface IAnimal
{
void Die();
void Speak(string sayWhat);
}从我的静态void,我希望能够调用dog.Speak(),但我不能,因为它没有在IDog中实现。我知道我可以很容易地从派生类中访问the (),但是是否有可能通过实现来访问它,或者这将是一个糟糕的设计?
发布于 2015-04-29 17:28:36
假设所有IDog都是IAnimal,则声明IDog为实现IAnimal。
public interface IDog : IAnimal发布于 2015-04-29 17:30:42
你可以表演一个角色:
((Animal) dog).Speak("Bark"); 或者利用多接口继承:
public interface IDog : IAnimal
{
void CatchFrisbee();
}https://stackoverflow.com/questions/29950516
复制相似问题