Geerbte Attribute
Attribut code
[AttributeUsage(AttributeTargets.Property, Inherited = true)]
class IgnoreAttribute : Attribute
{
}
Basisklasse
abstract class ManagementUnit
{
[Ignore]
public abstract byte UnitType { get; }
}
Main-Klasse
class Region : ManagementUnit
{
public override byte UnitType
{
get { return 0; }
}
private static void Main()
{
Type t = typeof(Region);
foreach (PropertyInfo p in t.GetProperties())
{
if (p.GetCustomAttributes(typeof(IgnoreAttribute), true).Length != 0)
Console.WriteLine("have attr");
else
Console.WriteLine("don't have attr");
}
}
}
Ausgabe: don't have attr
Erklären, warum dies passiert ist? Nach allem muss es geerbt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
vom http://aclacl.brinkster.net/InsideC/32ch09f.htm
Siehe Kapitel " Festlegen der Vererbung Attribut Regeln
EDIT: check Vererbung von Benutzerdefinierte Attribute auf Abstrakte Eigenschaften
Die erste Antwort:
Den Vererbung-flag in PropertyInfo.GetCustomAttributes wird ignoriert, sowohl die Eigenschaften und Ereignisse dokumentiert durch: https://msdn.microsoft.com/en-us/library/dwc6ew1d.aspx . Aber Sie können eines der Attribute.GetCustomAttributes überlastungen zu aktivieren Sie die Vererbung von Eigenschaften (oder Ereignissen).
Dieses Problem besprochen wird und weitere details in: http://blog.seancarpenter.net/2012/12/15/getcustomattributes-and-overridden-properties/