Ich versuche ein Objekt durch ein Attribut für ein Klassen-Eigenschaft zu bauen, die eine Spalte in einem zugeführten Datenzeile angibt, dass der Wert der Eigenschaft ist, wie folgt:C# Einstellung Eigenschaftswerte durch Reflexion mit Attributen
[StoredDataValue("guid")]
public string Guid { get; protected set; }
[StoredDataValue("PrograGuid")]
public string ProgramGuid { get; protected set; }
in einem Build() -Methode auf einem Basisobjekt, erhalte ich die Attributwerte setzen auf diesen Eigenschaften als
MemberInfo info = GetType();
object[] properties = info.GetCustomAttributes(true);
jedoch an dieser Stelle ich die Beschränkung in meinem Wissen bin zu realisieren.
Zunächst einmal scheint ich nicht die richtigen Attribute zurück zu bekommen.
Und wie setze ich diese Eigenschaften durch Reflexion, jetzt, wo ich die Attribute habe? Mache/denke ich etwas grundsätzlich falsch?
Ich werde das einen Test geben und Sie wissen lassen, sieht logisch aus – johnc
Attribut.GetCustomAttribute (...) gibt ein Array von System.Attribute zurück und kann nicht einfach in das Attribut selbst umgewandelt werden. Das gezeigte Beispiel lässt sich gar nicht erst kompilieren, geschweige denn arbeiten. Sie müssen die Array-Länge testen, um festzustellen, ob das gewünschte Attribut vorhanden ist, und stattdessen das erste Element in den gewünschten Typ umwandeln. –
Das Beispiel verwendet GetCustomAttribute, nicht GetCustomAttributes. Das Beispiel kompiliert, wenn ich es versuche (natürlich den Attributnamen ändern). –