変更できないプロパティを持つ不変クラスと、そこから派生する可変クラスを作成することに興味があります。これらのオブジェクトは、データベース レコードを表す単純なデータ オブジェクトであるため、プロパティの不変値のみを持ちます。
私の目標は、データベースの値に基づいてプロパティを設定し、これらのオブジェクトの読み取り専用バージョンをアプリケーションに戻すことによって、データ アクセス レイヤーでオブジェクトの変更可能なバージョンを正常に作成することです。(開発者が本当に望んでいるのであれば、コードが不変オブジェクトを可変オブジェクトに明示的にキャストできるという事実には問題ありません。)
ゲッターとセッターのメソッドを使用し、ミュータブル クラスのパブリックな新しいセッターを使用して、これを醜く行うことができます (それは単語ですか?)。
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); }
}
可能であれば、自動プロパティを使用することをお勧めします。デバッグ時には、自動プロパティの方がはるかに優れています。それ以外は、コードがどのように見えるかはあまり気にしません。すべてコード ジェネレーターから取得され、決して見られることはないからです。
何か案は?