我对创建一个不可修改属性的不可变类以及从其派生的可变类感兴趣。这些对象将是表示数据库记录的简单数据对象,因此它们只有属性的不可变值。任何方式来从C#中的不可变对象派生可变对象?
我的目标是通过基于数据库值设置属性,但将这些对象的只读版本传回应用程序,让我的数据访问层正常创建对象的可变版本。 (如果开发者真的想要,代码可以明确地将不可变对象转换回可变对象的事实,我很好)。
我可以这样做uglily(是一个单词吗?),使用方法getter和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); }
}
我宁愿尽可能使用自动性能 - 他们是在调试的时候好多了。除此之外,我并不关心代码的外观,因为它只是全部来自代码生成器,并且永远不会被查看。
任何想法?
这很完美 - 我的思维如此枯燥,我甚至没有考虑过接口,但这对我的场景绝对有用。非常感谢你。 – 2009-11-19 22:06:06