首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DataContracts上实施重划

在DataContracts上实施重划
EN

Stack Overflow用户
提问于 2011-10-11 22:28:54
回答 1查看 1.2K关注 0票数 4

有任何方法可以强制限制以数据契约形式传递给给定WCF服务的参数的值吗?

例如,请考虑这个Vehicle类的人为的、当然是不可编译的示例:

代码语言:javascript
复制
[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个轮子。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-12 03:12:02

下面是一个使用数据注释的示例:

代码语言:javascript
复制
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
}

同样,应该注意的是,不能使用此方法向客户端发送/强制行为。它将只验证对象是否实现了所描述的验证。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7733294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档