通过两个不同的接口访问同一对象

Tot*_*oto 2 c# object

我有两个接口:

interface IStudent
{
    string Name { get; }
    string EducationLevel { get; }
}

interface ITeacher
{
    string Name { get; }
    string Department { get; }
}
Run Code Online (Sandbox Code Playgroud)

你会如何在C#中设计它,以便一个对象可以

  1. 仅实施学生(并且没有教师的财产)
  2. 仅实施教师​​(并且没有结果的属性)
  3. 实现两个接口而没有commone属性的冗余(Name)

任何想法 ?

我可以做两个直接实现两个接口的类.但对于一个既是老师又是学生的人,我将有两个不同的对象:我只想要一个!

Bot*_*000 5

我会提取一个通用的界面:

interface IPerson
{
    string Name { get; }
}

interface IStudent : IPerson
{
    string EducationLevel { get; }
}

interface ITeacher : IPerson
{
    string Department { get; }
}
Run Code Online (Sandbox Code Playgroud)

想想为什么你的两个接口具有相同的属性.他们都有名字,为什么他们有名字?因为他们都是一个人.所以你有你的共同界面.

实现两个接口的类只需要实现Name一次,因为它是一部分IPerson.