4

有什么方法可以对以数据合同形式作为参数传递给给定 WCF 服务的值实施限制?

例如,请考虑这个类的人为且肯定不可编译的示例Vehicle

[DataContract]
public class Vehicle
{
    [DataMember]
    [Restriction(MinValue = 1, MaxValue = 30)] // Certainly not allowed... or is it?
    public int NumberOfWheels { get; set; }
}

因为,当然,没有人希望找到一辆超过 30 个轮子的车辆,我想将 的范围限制NumberOfWheels在 1 到 30 之间。有什么方法可以使用 XSD 限制/方面来限制在这种情况下可接受值的范围?

(请注意,我当然可以将NumberOfWheelsfrom的类型更改为intto,例如,byte以进一步限制可能值的范围。但是,这并不能解决问题......当然,没有人希望车辆能够有 255 个轮子。)

4

1 回答 1

3

下面是一个使用数据注解的例子:

using System.ComponentModel.DataAnnotations;

[DataContract]
public class Test
{
    [DataMember]
    [Range(1, 30)]
    public int MyProperty { get; set; }
}

public void DoWork(Test t)
{            
    // this will throw validation exceptions, overloads are available to trap and handle
    Validator.ValidateObject(t, new ValidationContext(t), true);
    //do stuff here
}

再次应该注意的是,不能使用此方法将行为发送/强制发送给客户端。它只会验证对象是否满足描述的验证。

于 2011-10-12T03:12:02.263 回答