C#从属性中检索字段名



我面临验证一个属性的问题,该属性的验证属性与相应的字段名相关联。

int _myIntField;
public int MyIntField {
    get { return _myIntField; }
    set { _myIntField = value; }
}

现在,在验证Binding对象时,我可以访问BindingField,它返回属性名MyIntField,而不是字段名_myIntField

是否可以以某种方式检索该属性的_myIntField?如果是,如何?

实际上,对于我的情况,我有一个解决方案:我创建了一个以相关字段名为参数的自定义属性。。。

int _myIntField;
[MyAttribue("_myIntField")] 
public int MyIntField {
    get { return _myIntField; }
    set { _myIntField = value; }
}

为了完整起见,这里是属性的声明:

public class MyAttribue : ValidationAttribute {
    protected readonly string _fieldName;
    public MyAttribue(string fldName) {
      _fieldName = fldName;
    }
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
      if (validationContext == null) {
        return ValidationResult.Success;
      }
      ErrorMessage = string.Empty;
      if (validationContext.ObjectInstance != null) {
        // do whathever validation is required using _fieldName...
      }
      //
      if (!string.IsNullOrWhiteSpace(ErrorMessage)) {
        return new ValidationResult(ErrorMessage);
      }
      return ValidationResult.Success;
    }
  }

相关内容

  • 没有找到相关文章

最新更新