我有一组正在使用的接口。它们是IPatient,IDoctor和IPerson。 IPerson包含每个人的共享属性(姓名,性别,地址等)。我想让IDoctor和IPatient实现IPerson,但是this can't be done in C# according to this question

有什么方法可以消除IPatient和IDoctor之间的这些重复属性?

最佳答案

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

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;}
}


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

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

10-01 01:54