有任何方法可以强制限制以数据契约形式传递给给定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限制/面来限制可接受值的范围吗?
(请注意,我当然可以将NumberOfWheels的类型从int更改为byte,以进一步限制可能值的范围。然而,这并不能解决问题.当然,没有人期望一辆车有255个轮子。)
发布于 2011-10-12 03:12:02
下面是一个使用数据注释的示例:
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
}同样,应该注意的是,不能使用此方法向客户端发送/强制行为。它将只验证对象是否实现了所描述的验证。
https://stackoverflow.com/questions/7733294
复制相似问题