Heim >Backend-Entwicklung >C++ >Wie kann ich C#-Eigenschaften effizient finden, die mit einem bestimmten Attribut versehen sind (AllowMultiple = false)?
In der Welt der .NET-Reflektion kann das Abrufen einer Liste von Eigenschaften, die mit einem bestimmten Attribut versehen sind, häufig erforderlich sein. Bei der vorliegenden Frage geht es um die Identifizierung von Eigenschaften, die das Attribut „MyAttribute“ tragen, wobei „AllowMultiple“ auf „false“ gesetzt ist.
Der vorgestellte anfängliche Ansatz durchlief alle Eigenschaften mithilfe von t.GetProperties(), gefolgt von einer Schleife zur Untersuchung der Attribute jeder Eigenschaft mit prop.GetCustomAttributes(typeof(MyAttribute), true). Diese Methode funktioniert zwar, erfordert jedoch die Erstellung mehrerer Attributinstanzen, was ineffizient sein kann.
Hier ist eine verbesserte Lösung, die die Where-Erweiterungsmethode von LINQ nutzt:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Dieser Ansatz vereinfacht das Attribut Überprüfungsprozess durch direkten Aufruf von Attribute.IsDefined für jede Eigenschaft, wodurch die Existenz des gewünschten Attributs effizient überprüft wird, ohne es zu instanziieren. Dies verbessert die Leistung erheblich, insbesondere bei Typen mit einer großen Anzahl von Eigenschaften.
Darüber hinaus ist die resultierende props-Variable ein IEnumerable von PropertyInfo-Objekten, was bei Bedarf eine weitere Filterung oder Manipulation ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich C#-Eigenschaften effizient finden, die mit einem bestimmten Attribut versehen sind (AllowMultiple = false)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!