2

検証に関して、DataContract の DataMember に追加できるデータ注釈があるかどうか疑問に思っています。

長さが 50 文字を超えたくない firstname(string) データメンバーがあるとします。それをキャッチする方法はありますか、または firstname の長さが 50 を超える場合に例外をスローするカスタム faultexception を実装する必要がありますか?

WCF セキュリティのためにこの検証が必要です。これに関する提案はありますか?

4

1 に答える 1

1

DataMembersに注釈を付けることで宣言的に検証を指定できるDataContractSerializerの機能はありません。

DataMemberを(フィールドではなく)プロパティとして定義する場合は、プロパティセッターで、逆シリアル化中にデータを検証するコードを記述できます。コードは、検証の失敗時に例外をスローしたり、データを変更したりする可能性があります(たとえば、名のメンバーの例では、データを50文字に切り捨てます)。

[DataMember]
public string FirstName
{
  get { return ...; }
  set { if (value.Length > 50) throw new MyValidationException(); }
}
于 2012-10-01T13:25:04.953 に答える