New*_*ian 2 c# generics polymorphism inheritance
来自Java或Python我习惯于制作这样的结构,通常它"只是工作".最近发现了C#,除了一些挫折之外,发现它很愉快.
令人沮丧的是,我必须通过多态构造(覆盖,虚拟等)来掌握它.
这是一个我还没有找到如何"只是做工"的案例.
class Polymorphism
{
public interface IPerson
{
String Name { get; set; }
}
public class Doctor : IPerson
{
public String Name { get; set; }
}
public class DoctorGroup
{
public IEnumerable<IPerson> Members
{
get
{
return DoctorMembers;
}
}
public List<Doctor> DoctorMembers { get; set; }
public DoctorGroup()
{
DoctorMembers = new List<Doctor>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里DoctorMembers是IPersonS,所以当记者问一个我应该能够仅仅返回医生的名单IEnumerable中IPerson.
public IEnumerable<IPerson> Members
{
get
{
return DoctorMembers;
}
}
Run Code Online (Sandbox Code Playgroud)
然而......编译器抱怨......为什么?我错过了什么?从语义上讲,这没有任何问题,到目前为止我使用的大多数OOP语言都可以在没有语法Pepto-Bismol的情况下消化它.我错过了一个关键字,使编译器显而易见吗?
这里明显的捷径是LINQ转换所有医生,IPerson但我不明白为什么这是必要的甚至是可取的.
有人可以点亮我的灯笼吗?