【发布时间】:2015-01-19 06:23:47
【问题描述】:
是否可以强制类的派生类实现接口?
假设我有接口IImportantStuff 和类Base 和DerivedA、DerivedB、DerivedC 和...
我想强制 DerivedA、DerivedB、DerivedC 以及将来继承 Base 类的所有其他类(我可能设计的类未来)来实施IImportantStuff。
已编辑:
作为另一个问题,每个继承类(从基类派生)都与某个实体(例如客户、店主、人员)一起使用,我想强制派生类声明它们的实体,以防止我团队中的程序员创建一个从 Base 继承的类而不定义实体。我想通过泛型和接口来做到这一点,以便在基本表单上他们可以访问实体的属性和成员。
例如
class Base<T> { public T Entity {get; set;} }
class MidClass : Base {}
class Customer
{
public string CustomerName {get; set;}
}
class Shopkeeper
{
public int ShopkeeperID {get; set;}
}
class Shop1 : Base<ShopKeeper>
{
//1. Force the programmer to implement ShopkeeperID
//2. Be able to access the properties of Shopkeeper
void MyMethod()
{
var skid = this.Entity.ID;
}
}
class Shop2 : Base<Customer>
{
void MyMethod()
{
var skid = this.Entity.CustomerName;
}
}
我希望 Shop1 和 Shop2 继承 Base 类,而不是直接继承接口,因为我的合作程序员可能会忘记在他们的类上从 Interface 继承。所以我想对 MidClass 进行强制,它们从 MidClass 继承的类应该实现接口。
【问题讨论】:
-
你能显示类定义吗?
-
@48klocs 我这样做了。谢谢。
标签: c# oop generics inheritance interface