【发布时间】:2012-01-24 11:14:34
【问题描述】:
对于可以保存在持久性介质中的类,我正在创建名为IPersistable 的接口,旨在提供persistenceId。
public interface IPersistable
{
private readonly string persistenceId;
}
当然,我不能这样做,因为接口不允许字段。如果是这样,我会在下面完成它
Public Class Customer
{
private readonly string persistenceId;
Public string UserId
{
get{return persistenceId};
}
Public Customer(string customerId)
{
persistenceId = customerId;
}
}
我已经在继承一个类,因此无法进行多重继承。我可以使用组合,但接口在这里似乎是正确的。向我展示一个巧妙的技巧来执行上述操作,而不是为每个需要持久化的类添加一个属性。
问题
如果可能,与IPersistable 接口的类是否可以将属性名称(如果 persistenceId 是属性)更改为有意义的名称?
【问题讨论】:
-
接口是对外使用的公共合约,为什么使用这个接口的人需要关心私有字段叫什么?您不能更改公共成员名称,否则会违反合同。
-
您似乎在这个私有字段前面加上了类名或从类名推导出来的东西。这是不必要的;
Customer.id似乎比Customer.customerId更好,并且还避免了您想要重命名每个类的属性(无论如何这是不可能的)。另外,你知道你可以在接口中拥有属性吗?
标签: c# inheritance properties interface