Wie man Eigenschaften einer Klasse mithilfe der benutzerdefinierten Eigenschaft Attribute

Habe ich ein benutzerdefiniertes Attribut, das ich anwenden, um die Eigenschaften einer Klasse. Dieses Attribut wird verwendet für den Export die Klasse die Eigenschaften einer flachen Datei.

Einer der Attribut-Eigenschaften ist FieldOrder. Ich brauche zu machen sicher, dass die Reihenfolge, in der ich exportieren Sie die Eigenschaften der Klasse, der richtige ist. Auch sind nicht alle Eigenschaften auf die Klasse wird das benutzerdefinierte Attribut.

Fand ich diesen Artikel: Wie Sortiere ich eine generische Liste, basierend auf einem benutzerdefinierten Attribut? Dieser Lösung übernimmt alle Eigenschaften der benutzerdefinierten-Attribut, das ist nicht mein Fall. Ich war auch der Hoffnung für die elegantere Lösung.

Ihre Hilfe ist sehr geschätzt!

public interface IFileExport{}

public class ExportAttribute: Attribute
{
    public int FieldOrder { get; set; }
    public int FieldLength { get; set; }
    public ExportAttribute() { }
}

public class ExportClass: IFileExport
{
    [ExportAttribute( FieldOrder = 2, FieldLength = 25 )]
    public string LastName { get; set; }

    [ExportAttribute( FieldOrder=1, FieldLength=25)]
    public string FirstName { get; set; }

    [ExportAttribute( FieldOrder = 3, FieldLength = 3 )]
    public int Age { get; set; }

    public ExportClass() { }
}

public class TestClass
{
    public static List<PropertyInfo> GetPropertiesSortedByFieldOrder
                                                            (IFileExport fileExport)
    {
        //get all properties on the IFileExport object
        PropertyInfo[] allProperties = fileExport
                         .GetType()
                         .GetProperties( BindingFlags.Instance | BindingFlags.Public );
        //now I need to figure out which properties have the ExportAttribute 
        //and sort them by the ExportAttribute.FieldOrder
    }
}

UPDATE: ich bin mit der Bestellung der Eigenschaften von ExportAttribute.FieldOrder Aufsteigend

  • Nur ein Gedanke, aber vielleicht wäre es einfacher, eine einfache xml-Serialisierung, und schreiben Sie dann eine Bibliothek zum konvertieren von der einfachen flat-xml-Datei in eine flat-Datei. Es würde wiederverwendbar, und Sie könnte überspringen all das benutzerdefinierte Attribut setup-Arbeit und Reflexion.
InformationsquelleAutor Developer22 | 2011-07-29
Schreibe einen Kommentar