状況:
私はしばしばこの問題に遭遇し、それを解決する方法がわかりません。どこでどのように答えを探すべきかわかりませんが。だからここにあります。一部のオブジェクトを他のオブジェクトに保存する場合、それらを読み取り専用として、またはゲッターのみで保持できますが、これは同じです。このように、 MyInt の値を変更することはできません
public class ClassA {
public readonly int MyInt;
public string MyString;
}
これを次のようにコンテナに入れたい場合は問題ありません。
public class ClassB {
public readonly ClassA MyClassA;
public string MyString;
}
これは引き続き期待どおりに機能します。MyInt は読み取り専用で、MyStringA は読み取り専用ではありません。
問題:
しかし、MyClassA を取得して MyClassA.MyStringA を設定することはできます。「より厳密な」読み取り専用システムを使用する方法はありますか? 上記の例では、MyClassA の場合、MyClassA のフィールドをすべて読み取り専用にしたいと考えています。
私が考えることができる唯一の解決策は、別のクラス MyClassAreadonly を持つことです。しかし、それは醜く、便利ではないようです。
環境:
この動作を探している理由は、MyClassB.MyClassA.MyString を設定する前に、MyClassB.MyString にロジック (イベントの発生など) を追加してもらいたいからです。したがって、別の解決策は、 ClassB.MyClassA を非公開に設定して表示しないことです。しかし、MyClassA を取得できるのはうれしいことです。しかし、それを取得して変更すると、ClassB ロジックが欠落します。
PS: 私はそれを理解することはできませんが、十分に明確であることを願っています.