4

例如,在这个类中,我想强制限制名字/姓氏可以允许的字符。

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

有没有办法强制对名字或姓氏进行字符串限制限制,所以当客户端在将其发送给我之前对其进行序列化时,如果它违反了长度限制,它会在他们这边抛出一个错误?

更新:这需要在 WSDL 本身中识别和强制,而不是在我收到无效数据之后。

4

3 回答 3

11

死灵时间......虽然值得一提。

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 Extensions应用 XML Schema 验证(例如,maxLength facet):

[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 回答