1

ブール型の 3 つの異なる状態変数を持つことができるオブジェクトがあります。ルールは、一度に 3 つのうちの 1 つだけが真になることができるということです。他のすべては false でなければなりません。

サーバー側の検証を作成しており、このルールを確認する必要があります。1 つの状態のみが true であることをテストする、使用できる簡単な操作はありますか?

これにはトリプル If ロジックは避けたいと思います。

更新: これは ASP.NET にはありません。渡されるレコードは 3 つのブール値です。オブジェクトは json シリアライゼーションを介して渡されます。だから私は与えられたもので働いています。

4

2 に答える 2

2

オブジェクトに 3 つのboolプロパティがあり、そのうちの 1 つだけが である必要がある場合true、次のアプローチが気に入っています。

public static int TrueCount(params bool[] booleans)
{
    return booleans.Count(b => b);
}

それは簡単です:

bool onlyOneTrue = TrueCount(obj.Pprop1, obj.Prop2, obj.Prop3) == 1;

デモ

Enumerable.Count必要があることに注意してくださいusing System.Linq;

于 2013-02-20T22:26:31.020 に答える
0

正しい型を使用していないように思えます。おそらく、3 つの値を持つ列挙型を使用する必要があります。

public enum ThreeThings
{
  state1,
  state2,
  state3
}

列挙では、有効な列挙値が与えられた場合、3 つのうちの 1 つしかありません。

于 2013-02-20T22:23:55.303 に答える