我有一个抽象基类Contact
,它有两个子类:Person
和Company
.
我想要 aCustomer
或Vendor
其他可以是 aCompany
或 a 的类型Person
(都共享相同的主键ContactId
)。
我的问题是是否可以继承所有这些类型Contact
?如果答案是否定的,是否还有其他使用Contact
PK 属性的选项?对于这种情况,推荐的设计是什么?
请注意,我希望Employee
/Customer
等也能够成为User
.
我有一个抽象基类Contact
,它有两个子类:Person
和Company
.
我想要 aCustomer
或Vendor
其他可以是 aCompany
或 a 的类型Person
(都共享相同的主键ContactId
)。
我的问题是是否可以继承所有这些类型Contact
?如果答案是否定的,是否还有其他使用Contact
PK 属性的选项?对于这种情况,推荐的设计是什么?
请注意,我希望Employee
/Customer
等也能够成为User
.
你将如何在 C# 中实现这一点?这是您必须自己回答的第一个问题,因为 .NET 不支持多重继承,因此您不能Customer
从Person
or / 派生单个类,并且Company
- 您需要单独Customer
的类派生自Person
和另一个Customer
派生自的类,Company
但每次看到这个你应该知道你做错了什么。此外,如果您将来发现需要同时拥有 ContactEmployee
并且Customer
您将准备好删除整个应用程序,因为继承将无法实现这一点。Contact
只有直接使用 SQL 才能从Customer
to更改,Employee
因为 EF 不允许这样做。
继承不能解决您的问题 - 您必须使用组合(关系)。