验证您无法控制数据或类的类的属性吗?

时间:2019-01-25 14:33:30

标签: c# asp.net .net

我正在尝试学习一种智能的,设计模式类似的方式来验证库类的属性,该类保存从Web服务(eBay SDK)返回的电子商务订单的数据。

还有其他问题,但由于以下原因,我无法将其应用于我的情况:

  • 我要验证的类来自SDK,它没有标记为virtual的属性,因此它意味着我必须用new隐藏基本属性,并在新属性中调用base才能访问它们。
  • 如果我从基类派生并使用带有base.propertyName的new修饰符,以有效地复制类属性,并能够在它们之上添加验证属性,则无法将我要验证的对象转换为此派生类具有可以调用.Validate()的属性,因为您无法从基类型“转换”为派生类型。

是否有任何方法可以对合同样式的类属性进行验证,从而对要验证的类没有类定义控制?而不是创建一个具有20个if语句的验证器类,并对每个属性进行空检查和逻辑?

我只需要一个特定的对象,并且我知道属性和有效的值,就可维护性和代码而言,我只是不觉得将命令传递给带有一堆if语句的类是好事,质量。

这是我想为可以调用.Validate()的派生类型编写的代码,由于我不知道如何接受基类并将其转换为此类,所以我停止编写此代码:

    public class ValidatableOrderType : eBay.Service.Core.Soap.OrderType
    {
        public ValidatableOrderType(eBay.Service.Core.Soap.OrderType baseType)
        {

        }

        [Required(ErrorMessage = "OrderID cannot be null.")]
        new public string OrderID
        {
            get { return base.OrderID; }
        }
    }

1 个答案:

答案 0 :(得分:2)

我认为您最好的选择是使用fluentvalidator。

https://fluentvalidation.net/

它是一种出色的验证软件,比元数据属性更强大。

希望对您有帮助