子类的条件验证

Posted

技术标签:

【中文标题】子类的条件验证【英文标题】:Conditional validation of subclass 【发布时间】:2011-06-28 06:59:31 【问题描述】:

我有以下类的 ASP.NET MVC 3 应用程序:

public class Person

  public string FirstName  get; set; 
  public string LastName  get; set; 
  public Address HomeAddress  get; set; 

  // [Optional("MailingAddrressSameAsHome")] - some custom attribute
  public Address MailingAddress  get; set; 

  public bool MailingAddrressSameAsHome  get; set; 



public class Address

  [Required]
  public string Street  get; set; 
  ...

现在我想验证,仅当 MailingAddressSameAsHome 为 false 时邮寄地址。不幸的是,我不知道如何停止验证 Address 类中的属性。

你有什么想法吗?

【问题讨论】:

【参考方案1】:

您是否考虑仅在需要时设置 MailingAddress,从而让属性 MailingAddrressSameAsHome 为只读:

    public bool MailingAddrressSameAsHome 
    
      //Null means no MailingAddress, which means: use HomeAddress
      get  return MailingAddress == null ;  
    

如果是这样,您可以随时验证 MailingAddress。

问候, 莫腾

【讨论】:

否,因为 ASP.NET MVC 不支持这个【参考方案2】:

你可以用自定义属性来写这个

【讨论】:

展示你将如何实现这一目标总是一个好主意,而不是说出来。 SO的社区很大,没有人拥有相同的知识或水平。 ;)

以上是关于子类的条件验证的主要内容,如果未能解决你的问题,请参考以下文章

基于 iOS 版本的条件子类化

父类对象与子类对象相互转化的条件是啥?如何实现它们的相互转化?

如何有条件地实例化不同的子类?

php二维数组如何转为树状数组条件是子类pid=父级id

java 多态利弊 及 父子类转换条件

typescript.-如何使用类验证器和类转换器(Nestjs)验证子类中的特定字段