Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 空属性不会导致验证失败,尽管StringLength属性_C#_Web Services_Validation_Datacontractserializer - Fatal编程技术网

C# 空属性不会导致验证失败,尽管StringLength属性

C# 空属性不会导致验证失败,尽管StringLength属性,c#,web-services,validation,datacontractserializer,C#,Web Services,Validation,Datacontractserializer,我有一个名为MyMethodQuery的类,它包含我的web方法的entry属性 [DataContract()] public class MyMethodQuery { [DataMember(IsRequired = true)] [StringLength(100, MinimumLength = 10)] public string Id{ get; set; } } 我的Web方法: public string MyMethod(MyMethodQuery

我有一个名为MyMethodQuery的类,它包含我的web方法的entry属性

[DataContract()]
public class MyMethodQuery
{
    [DataMember(IsRequired = true)]
    [StringLength(100, MinimumLength = 10)]
    public string Id{ get; set; }
}
我的Web方法:

public string MyMethod(MyMethodQuery MyMethodQuery)
{
   return "it's ok !";
} 
如果我离开空属性,我想抛出一个异常。但不管属性是
StringLength
,它都不起作用


我用SoapUI测试我的方法。

这些属性不应该在这种“开箱即用”的上下文中工作。类是验证世界的入口点,您必须手动调用它

有关示例,请参见。

[DataContract()]
[DataContract()]
public class MyMethodQuery: IValidatableObject
{
    [DataMember(IsRequired = true, EmitDefaultValue = false)]
    [StringLength(500, MinimumLength = 5)]
    public string Id { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
         if (Id.Length < 1)
         {
             yield return new ValidationResult("error");
         }
    }
}
公共类MyMethodQuery:IValidatableObject { [DataMember(IsRequired=true,EmitDefaultValue=false)] [StringLength(500,最小长度=5)] 公共字符串Id{get;set;} 公共IEnumerable验证(ValidationContext ValidationContext) { 如果(Id长度<1) { 返回新的ValidationResult(“错误”); } } }
但是如果
Id
为空,则我没有返回错误