クラスを制限して、1 つのプロパティのみが値を保持できるようにする方法はありますか?残りは null にする必要があります。それとも、何かが設定されているときに他のすべてを null に割り当てて処理する必要がありますか?
これに近づくより実行可能な方法はありますか?
これを行う方法は C# に組み込まれていません。あなたが説明していることはF# の判別共用体を介して処理されますが、C# にはそのような型はありません。ただし、そのような動作を提供する独自のユニオン クラスを作成することもできます。
クラスでこのように実装できます
public class OneProp
{
private string val1;
public string Value1 { get { return val1; } };
private string val2;
public string Value2 { get { return val2; } };
public void SetValue(string propName, string propValue)
{
// null all values here
val1 = null;
val2 = null;
switch(propName)
{
case "Value1":
val1 = propValue;
break;
case "Value2":
val1 = propValue;
break;
}
}
}
次に、そのインスタンスを作成します。
OneProp val = new OneProp();
val.SetValue("name", "value");
コンストラクタで行うこともできます。