有没有办法可以对以数据合同形式传递的值作为参数给予给定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个车轮。)
答案 0 :(得分:3)
以下是使用dataannotations的示例:
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
}
同样应该注意,使用此方法无法将行为发送/强制到客户端。它只会验证对象是否符合描述验证。