有什么方法可以对以数据协定形式作为参数传递给给定 WCF 服务的值施加限制?
例如,请考虑这个 Vehicle
的人为且肯定不可编译的示例。类(class):
[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 个车轮。)
最佳答案
这是使用数据注释的示例:
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
}
再次应注意,不能使用此方法将行为发送/强制发送到客户端。它只会验证对象是否满足所描述的验证。
关于.net - 对数据契约(Contract)实现限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733294/