Heim > Backend-Entwicklung > C++ > Wie kann ich Eigenschaften mit benutzerdefinierten Attributen in .NET effizient abrufen?

Wie kann ich Eigenschaften mit benutzerdefinierten Attributen in .NET effizient abrufen?

Susan Sarandon
Freigeben: 2024-12-27 04:42:25
Original
113 Leute haben es durchsucht

How Can I Efficiently Retrieve Properties with Custom Attributes in .NET?

Abrufen von Eigenschaften mit benutzerdefinierten Attributen: Ein effizienter Ansatz

Bei der Arbeit mit Reflektion in .NET ist es oft notwendig, Typen und ihre Mitglieder zu untersuchen um auf bestimmte Informationen zuzugreifen. Ein häufiges Szenario besteht darin, eine Liste von Eigenschaften abzurufen, die mit einem bestimmten benutzerdefinierten Attribut gekennzeichnet sind. Diese Aufgabe kann mit der Methode GetCustomAttributes() erledigt werden, es gibt jedoch eine effizientere und prägnantere Methode.

Beachten Sie den folgenden Codeausschnitt, der darauf abzielt, Eigenschaften mit dem MyAttribute-Attribut abzurufen:

foreach (PropertyInfo prop in t.GetProperties())
{
    object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true);
    if (attributes.Length == 1)
    {
         //Property with my custom attribute
    }
}
Nach dem Login kopieren

Obwohl dieser Ansatz ordnungsgemäß funktioniert, weist er den Nachteil einer unnötigen Objektinstanziierung auf. Die GetCustomAttributes()-Methode gibt ein Array von Attributinstanzen zurück, was zusätzliche Speicherzuweisung und Overhead erfordert.

Um diesen Code zu optimieren, können wir die Where()-Methode und die Attribute.IsDefined()-Methode nutzen, wie gezeigt unten:

var props = t.GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Nach dem Login kopieren

Dieses überarbeitete Code-Snippet verbessert die Effizienz erheblich, indem es Attribute.IsDefined() verwendet, um das Vorhandensein des Attributs zu überprüfen, ohne ein Attributobjekt zu instanziieren. Die Where()-Methode filtert die Sammlung von Eigenschaften und gibt nur diejenigen zurück, die das angegebene Prädikat erfüllen.

Dieser Ansatz optimiert nicht nur den Code, sondern minimiert auch den Speicherverbrauch, indem unnötige Objekterstellung vermieden wird. Es bietet eine effizientere und elegantere Lösung zum Abrufen von Eigenschaften, die mit benutzerdefinierten Attributen gekennzeichnet sind.

Das obige ist der detaillierte Inhalt vonWie kann ich Eigenschaften mit benutzerdefinierten Attributen in .NET effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage