我有兴趣制作一个具有无法修改的属性的不可变类,以及一个派生自它的可变类。这些对象将是表示数据库记录的简单数据对象,因此它们的属性只有不可变的值。
我的目标是让我的数据访问层正常创建对象的可变版本,方法是根据数据库值设置属性,但将这些对象的只读版本传递回应用程序。(如果开发人员真的想要,代码可以将不可变对象显式转换回可变对象,我对此感到满意。)
我可以这样做很丑(这是一个词吗?),使用 getter 和 setter 的方法,并为可变类提供一个公共的新 setter:
public class ImmutableClient {
private int _clientId;
public int getClientId() { return _clientId; }
protected void setClientId(int clientId) { _clientId = clientId; }
}
public class Client : ImmutableClient {
public new void setClientId(int clientId) { base.setClientId(clientId); }
}
如果可能的话,我更喜欢使用自动属性——调试时它们会更好。除此之外,我并不真正关心代码的外观,因为它只是来自代码生成器并且永远不会被查看。
有任何想法吗?