ViewModel 中的 DataAnnotations w/o 覆盖 DomainModel 属性
DataAnnotations in ViewModel w/o overriding DomainModel Properties
如何在不覆盖其属性的情况下在继承域模型的视图模型中添加DataAnnotation
?
User
领域模型
public class User{
public string UserName { get; set; }
public string Password { get; set; }
}
Register
查看模型
public class Register : User{
[Required]
public string Password { get; set; }
}
在这里,有没有一种方法可以将 DataAnnotation
添加到 UserName
和 Password
而无需在 Register
视图模型中继承这些属性?
您可以创建一个 customrequired 属性并将其继承 属性 设置为 false
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field
| AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public class CustomRequiredAttribute : RequiredAttribute
{
}
因此您的用户域模型如下所示:
public class User{
[CustomRequired]
public string UserName { get; set; }
[CustomRequired]
public string Password { get; set; }
}
现在你的寄存器模型如下
public class Register : User
{
public string Password{get;set;}
}
所以现在所需的 属性 不会被 child class 继承,如果你深入挖掘 Required
属性,你可以找到你的 Inherited
布尔值 属性 如下所示:
Summary:
Gets or sets a Boolean value indicating whether the indicated attribute can be inherited by derived classes and overriding members.
Returns:
true if the attribute can be inherited by derived classes and overriding members; otherwise, false. The default is true.
如何在不覆盖其属性的情况下在继承域模型的视图模型中添加DataAnnotation
?
User
领域模型
public class User{
public string UserName { get; set; }
public string Password { get; set; }
}
Register
查看模型
public class Register : User{
[Required]
public string Password { get; set; }
}
在这里,有没有一种方法可以将 DataAnnotation
添加到 UserName
和 Password
而无需在 Register
视图模型中继承这些属性?
您可以创建一个 customrequired 属性并将其继承 属性 设置为 false
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field
| AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public class CustomRequiredAttribute : RequiredAttribute
{
}
因此您的用户域模型如下所示:
public class User{
[CustomRequired]
public string UserName { get; set; }
[CustomRequired]
public string Password { get; set; }
}
现在你的寄存器模型如下
public class Register : User
{
public string Password{get;set;}
}
所以现在所需的 属性 不会被 child class 继承,如果你深入挖掘 Required
属性,你可以找到你的 Inherited
布尔值 属性 如下所示:
Summary: Gets or sets a Boolean value indicating whether the indicated attribute can be inherited by derived classes and overriding members.
Returns: true if the attribute can be inherited by derived classes and overriding members; otherwise, false. The default is true.