我想使用System.ComponentModel.DataAnnotations
程序集来验证我正在处理的控制台应用程序的参数(映射到属性)。我将使用“伙伴类”元数据模式;它过去对我很有用。
我需要验证的一件事是提供了两种类型的参数中的一种。换句话说,可以指定参数foo
或参数bar
,但不能同时指定参数CompareAttribute
,也不能同时指定。
为此,我开始编写一个自定义验证属性,这似乎相当简单,但当我意识到我需要到达验证上下文的属性之外时,我有点迷失,并遍历到对象中的兄弟属性我我正在验证(如/// <summary>
/// This property, or the other specified, are required, but both cannot be set.
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class XORAttribute : ValidationAttribute
{
/// <summary>
/// If validation should fail, return this error message.
/// </summary>
public string ErrorMessage { get; set; }
/// <summary>
/// The name of the other required property that is mutually exclusive of this one.
/// </summary>
public string OtherValueName { get; set; }
public XORAttribute(string otherValueName)
{
this.OtherValueName = otherValueName;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//Something needs to go here.
}
}
)。这似乎是一个经典的反思案例,但我正在摸索如何继续前进。这就是我到目前为止所做的:
{{1}}
这里的一些帮助将不胜感激。
答案 0 :(得分:0)