1
に基づいてWebサービスデータコントラクトのプロパティを制限するために、私は、次のWebサービスを持っている:どのようにユーザーの役割
[DataContract]
public class Project
{
public long Id { get; set; }
public string Name { get; set; }
}
[OperationContract]
public Project GetProject(long Id);
今、私は特定のユーザーのみにさらされるべきSecretData
プロパティを追加します。私はいくつかのアイデアを思い付くしましたが、それらのどれも私と一緒に非常によく座っていない:
- は
Project
にNULL可能SecretData
プロパティを追加します。ユーザーに表示する権限がない場合は、null
に設定します。これは最も簡単なアプローチのようですが、消費者は「許可なし」null
と正当なnull
の値の違いをどのように伝えますか? - ソリューション1だけでなく、ブール値
CanViewSecretData
プロパティも追加します。これは正当なnull
問題に対処しますが、扱いにくいようです。 - 秘密データを取得するために別の操作
SecretDataType GetSecretData(long projectId)
を提供し、ユーザーにそれを呼び出す権限がない場合はエラーを返します。これはデータコントラクトをきれいに保ちますが、完全なオブジェクトを構築するために呼び出す必要のある別々の操作がたくさんあることがわかります。
もっと良いアプローチがありますか?