考虑以下:
public class EntityBase<TEntity>
{
public virtual void DoSomethingWhereINeedToKnowAboutTheEntityType()
{
}
}
public class PersonEntity : EntityBase<PersonEntity>
{
public override void DoSomethingWhereINeedToKnowAboutTheEntityType()
{
}
}
我将它添加到代码中并运行它,它工作正常,但我很惊讶我可以继承一个定义基于继承类的类。
当我尝试它时,我期望它不会编译,或者一旦实际调用就会失败。
您可以使用界面执行类似的操作:
public interface IEntityBase<TEntity>
{}
public class PersonEntity : IEntityBase<PersonEntity>
{}
实际上,我已经使用界面将我的代码从前者切换到了后者,但我仍然很好奇为什么会这样。