4

たとえば、このクラスでは、姓/名に許可される文字数を制限したいと考えています。

public class Person
{
     public string FirstName { get; set; }
     public string LastName { get; set; }
}

姓または名の文字列制限を強制する方法はありますか?クライアントがこれを送信する前にシリアル化すると、長さの制限に違反すると、クライアント側でエラーがスローされますか?

更新: これは、無効なデータを受け取った後ではなく、WSDL 自体で特定して強制する必要があります。

4

3 に答える 3

11

necro time... 言及する価値はあります。

using System.ComponentModel.DataAnnotations;
public class Person
{
     [StringLength(255, ErrorMessage = "Error")]
     public string FirstName { get; set; }
     [StringLength(255, ErrorMessage = "Error")]
     public string LastName { get; set; }
}
于 2011-03-29T07:10:30.137 に答える
3

SOAP拡張機能を使用してXMLスキーマ検証(例:maxLengthファセット)を適用できます。

[ValidationSchema("person.xsd")]
public class Person { /* ... */ }

<!-- person.xsd -->

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="Person" type="PersonType" />

  <xsd:simpleType name="NameString">
     <xsd:restriction base="xsd:string">
        <xsd:maxLength value="255"/>
     </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="PersonType">
    <xsd:sequence>
         <xsd:element name="FirstName" type="NameString" maxOccurs="1"/>
         <xsd:element name="LastName"  type="NameString" maxOccurs="1"/>
     </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
于 2008-10-17T16:45:30.197 に答える
0

自動プロパティからプロパティを変換し、それを自分で検証すると、送信前に処理する必要がある引数例外または同様のものをスローできます。

注: .NET 以外の言語が呼び出す場合は、サービス側でも検証する必要があります。または、最小テストで、別の言語でどのように機能するかを確認します。

于 2008-10-17T16:20:11.247 に答える