Ich habe ein benutzerdefiniertes Attribut, das ich auf Eigenschaften einer Klasse anwende. Dieses Attribut wird zum Exportieren der Eigenschaften der Klasse in eine flache Datei verwendet.
Eine der Eigenschaften des Attributs ist FieldOrder. Ich muss sicherstellen, dass die Reihenfolge, in der ich die Eigenschaften der Klasse exportiert, korrekt ist. Außerdem haben nicht alle Eigenschaften der Klasse das benutzerdefinierte Attribut.
Ich habe diesen Artikel gefunden: Wie sortiere ich eine generische Liste basierend auf einem benutzerdefinierten Attribut? Diese Lösung geht davon aus, dass alle Eigenschaften das benutzerdefinierte Attribut haben, was nicht mein Fall ist. Ich habe auch auf eine elegantere Lösung gehofft.
Ihre Hilfe wird sehr geschätzt!
%Vor%UPDATE: Ich bestelle die Eigenschaften nach ExportAttribute.FieldOrder Ascending
Da Sie nicht erklärt haben, wie Sie Eigenschaften ohne das bestellte Attribut haben wollten, habe ich es so gemacht, dass sie am Anfang stehen würden. Aber der Kern dieses Codes ist:
FieldOrder
, wobei -1
für Eigenschaften ohne das Attribut verwendet wird. (nicht sicher, was Sie hier wollten) PropertyInfo
PropertyInfo[]
-Array. Sie sollten in der Lage sein, die Methode GetCustomAttributes () auf jeder PropertyInfo zu verwenden, um die Datei zu filtern Eigenschaften mit den richtigen Attributen und sortieren Sie dann die verbleibenden Elemente.
Sie können eine der folgenden Optionen verwenden.
Erste Option: Übergeben Sie die anonyme Funktion an OrderBy
%Vor%Zweite Option: Erstellen Sie die Funktion zum Auswählen des Schlüssels und übergeben Sie ihn an OrderBy
%Vor%Die Tastenauswahlfunktion ist wie folgt definiert:
%Vor%Wenn die Eigenschaft kein ExportAttribute hat, gibt der Selektor -1 zurück. Sie können einen beliebigen anderen Standardwert auswählen.
Mit der zweiten Methode können Sie andere Arten von Selektoren für die Bestellung definieren und einfach den neuen Selektor aufrufen, den Sie definiert haben.
Tags und Links c# attributes sorting properties