首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#中的DataModel验证

c#中的DataModel验证
EN

Stack Overflow用户
提问于 2012-11-23 22:36:10
回答 2查看 256关注 0票数 0

我有一个c#应用程序(实际上,它运行在windows服务中,或者类似于windows应用程序)。

在从XML文件接收服务/应用程序的一次运行的配置时。

这个XML文件实际上只是用XML序列化/反序列化了我的数据。它是我的另一个生成它的应用程序之一。

在运行业务代码之前,我希望确保配置文件有效。

我的意思是“这个字符串不能为空”,“这个TimeSpan必须有一个大于By的值”,...

所以只能通过查看字段的内容来进行验证(不需要访问其他内容)。

它让我想起了很多我在asp.Net MVC中使用的数据注释,我希望对于简单的c#代码也有类似的东西,而不必加载整个asp.net MVC dll。

我的另一个选择是实现一个“if(String.IsNullOrEmpty() ()”方法,它会在一个字段不正确时抛出一个异常,但我会有很多验证和其他虚拟验证。

我不想自己实现一个使用reflexion的大型验证器,这对于一个小的配置文件验证来说有点过头了。

生成这些文件应用程序也可能有兴趣使用这些相同的验证。

编辑:我必须使用.Net 3.5

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-28 19:43:25

我使用了IDataErrorInfo(在wpf应用程序中将使用相同的类)。还有一个自定义方法,我在这里检查每一个可能的属性。

下面是方法:

代码语言:javascript
复制
 public Boolean IsModelValid()
    {
        Boolean isValid = true;
        PropertyInfo[] properties = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

        foreach (PropertyInfo p in properties)
        {
            if (!p.CanWrite || !p.CanRead)
            {
                continue;
            }
            if (this[p.Name] != null)
            {
                isValid = false;
            }
        }
        return isValid;
    }
票数 0
EN

Stack Overflow用户

发布于 2012-11-23 22:42:06

这个问题看起来像是下面的SO问题的副本。

Using ASP.Net MVC Data Annotation outside of MVC

编辑:鉴于您说ValidationContext不可用,我建议您编写一些使用反射的自定义代码,并为您计算属性上的所有属性。

有关如何做到这一点的示例,请参阅此问题的答案。

ASP.Net MVC 2 Controller's TryValidate doesn't validate the List<> items within the model

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

https://stackoverflow.com/questions/13531192

复制
相关文章

相似问题

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