読み取り専用のアプローチについてお答えしたいと思います。
読み取り専用は、パブリック フィールドに get アクセサーのみを持つ方法ではありません。私は主に、コンストラクターからのみプライベート フィールドを設定できるプライベート フィールドで readonly を使用します。したがって、読み取り専用フィールドはコンストラクターでのみ設定できることを理解するために、アクセスすることしかできません。
ベスト プラクティスは、常にプロパティを使用して、コンストラクターの後にフィールドにアクセスすることです。したがって、クラス内からプロパティにアクセスする必要がある場合に備えて、次のようにします。
private readonly int result;
private readonly int message;
public Result(bool result, string message)
{
this.result = result;
this.message = message;
}
public int Result
{
get{ return result; }
private set { result = value; }
}
public int Message
{
get{ return message; }
private set { message = value; }
}
そうすれば、結果とメッセージのみを読み取ることができ、クラス内から書き込むことができます。
継承を使用する場合は、必要に応じてセットを保護することができます。
編集:質問で与えられたものに基づいて作成したコードを読んだ後、クラス名ResultがプロパティResultでエラーをスローする可能性があり、結果としてboolを受け取り、文字列を受け取っているというバグがありますコンストラクターでメッセージを送信しますが、それらを int で送信しようとすると、これは間違いなく機能しません。しかし、ここで価値があるのは、モルロジックです。
private readonly bool result;
private readonly string message;
public Answer(bool result, string message)
{
this.result = result;
this.message = message;
}
public bool Result
{
get{ return result; }
private set { result = value; }
}
public string Message
{
get{ return message; }
private set { message = value; }
}