是否可以在.net中强制执行继承?
例如,我有一个类库项目,其中包含一个基类“BaseEntity”。我有3个类说“EntityA”,“EntityB”和“EntityC”,所有这些类都继承自这个基类。现在,当我在这个项目中创建另一个类时,.net应该给我一个编译时错误,该类不会从类“BaseEntity”继承。
答案 0 :(得分:7)
您不能强制C#编译器使项目中的每个类继承自特定的其他类,否。你也不应该。如果要创建一些辅助类或其他非实体类,该怎么办?为什么项目中所有都是实体?
现在,可以强制继承的两种方式:
BaseEntity
成为一个抽象类,这样每当您处理BaseEntity
的实例时,您实际上都在处理某个派生类的实例。您可以使用带有约束的类型参数编写泛型类型或方法,以使类型参数必须为BaseEntity
或派生类:
public void EntityLoader<T> where T : BaseEntity
这些都不是你所要求的,但它们是可用的。
答案 1 :(得分:1)
如果你真的想这样做(我认为Jon Skeet说他不应该这样做),你可以编写一个帮助命令行实用程序来加载特定的程序集,使用反射来测试你的继承规则。要获得编译时错误,请在项目的postbuild事件中调用此程序。