如何消除接口之间的重复

Bil*_*tin 1 .net c# inheritance interface

我有一组我正在使用的接口.他们是IPatient,IDoctor和IPerson.IPerson包含每个人的共享属性(姓名,性别,地址等).我希望IDoctor和IPatient能够实现IPerson,但根据这个问题,这不能在C#中完成.

有没有办法消除IPatient和IDoctor之间的这些重复属性?

Bro*_*ass 6

你说的重复在哪里?如果你看一个例子:

interface IPerson
{
    string Name { get; set; }
}

interface IDoctor : IPerson
{
    string Specialty {get; set; }
}

class Doctor : IDoctor
{
   public string Name { get; set; }
   public string Specialty {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这里没有重复 - Doctor只需要实现Name一次属性,当然也必须实现该Specialty属性.

接口只为您提供了一个接口,而不是属性的实现(这正是您在大多数情况下希望利用多态性所需的) - 如果您需要这些属性的默认实现,您应该使用实现的抽象基类那些属性.