1
Vote

ReflectionExtensions: Method HasAttribute returns always true

description

Use .NET 4.0
The Method's HasAttribute of class ReflectionExtensions returns always true:

Wrong:
    public static bool HasAttribute(this Type t, Type attrType)
    {
        return t.GetCustomAttributes(attrType, true) != null;
    }

    public static bool HasAttribute(this MemberInfo mi, Type attrType)
    {
        return mi.GetCustomAttributes(attrType, false) != null;
    }

Correct:
public static bool HasAttribute(this Type t, Type attrType)
{
  // GetCustomAttributes liefert ein Array mit 0 (null) Elementen,
  // wenn keine Attribute angewendet wurden, die attrType zugeordnet werden können.
  return t.GetCustomAttributes(attrType, true).Length > 0;
}

public static bool HasAttribute(this MemberInfo mi, Type attrType)
{
  // GetCustomAttributes liefert ein Array mit 0 (null) Elementen,
  // wenn keine Attribute angewendet wurden, die attrType zugeordnet werden können.
  return mi.GetCustomAttributes(attrType, false).Length > 0;
}
I need this by follow code
public bool IsMemberValid(MemberInfo member)
{
  return member.HasAttribute(typeof(ColumnAttribute));
}

#region IAuditPropertyResolver Member

public ModifiedEntityProperty GetAuditValue(MemberInfo member, object oldValue, object newValue)
{
  if (IsMemberValid(member))
  {
    var lValue = new ModifiedEntityProperty();

    lValue.MemberName = member.Name.SplitUpperCaseToString();
    lValue.OldValue = GetPropertyValue(oldValue);
    lValue.NewValue = GetPropertyValue(newValue);

    return lValue;
  }

  return null;
}

comments