【发布时间】:2015-04-27 09:58:55
【问题描述】:
我创建了一个验证属性。而IsValid方法如下
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class BlaBlaAttribute : ValidationAttribute
{
private readonly object _typeId = new object();
//...........
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var otherProperties = validationContext.ObjectType.GetProperties(BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance).ToList();
foreach (void propItem in otherProperties) {
// propItem.CustomAttributes.Count is zero for each and every property
DisplayAttribute attr = (DisplayAttribute)Attribute.GetCustomAttribute(propItem, typeof(DisplayAttribute));
if (attr == null) {
//............
}
}
return ValidationResult.Success;
}
}
并且属性使用如下
[MetadataType(typeof(SiteContact.SiteContactMD))]
public class SiteContact
{
public class SiteContactMD
{
[BlaBla()]
[Display(Name = "First Name")]
public override string christian { get; set; }
[Display(Name = "Last Name")]
public virtual string surname { get; set; }
[BlaBla()]
[Display(Name = "Email Id")]
public override string EMail { get; set; }
}
}
有一些显示属性,但attr 始终为空。如何获取其他属性的自定义属性?
【问题讨论】:
标签: .net validation reflection data-annotations custom-attributes