2016-08-07 34 views
2

Ich habe eine Arraylist mit Namen eines Feldes im aktuellen Objekt, wenn ich versuche, dies zu tun:(C#) Wie wird der Wert basierend auf dem Namensfeld gespeichert?

foreach(string name in array) 
{ 
    PropertyInfo property = this.GetType().GetProperty(name); 
    property.SetValue(this, value , null); 
} 

Die gescheitert execute ist und die Eigenschaft hat keinen Wert (in SharpDevelop sagt nur „null“) . Die Namen der Felder sind OK und existiert, was passiert?

+1

Nur neugierig - ist das eine Schulaufgabe? Nicht zu sagen, dass es schlecht ist, wenn es ist. Aber ich habe bemerkt, dass Bildungsmaterialien 'ArrayList' verwenden, obwohl sie seit der Einführung von Generika im Jahr 2005 nicht üblich waren. –

+1

Am besten wäre es, ein [minimales, vollständiges und verifizierbares Beispiel] (http: // stackoverflow .com/hilfe/mcve). Es wird dann sehr einfach zu beantworten sein. – sstan

+0

Ich bin ein Anfänger mit C#, ich versuche, einen Active Record zu machen, mit dieser Methode möchte ich das Tupel auf das Objekt instante laden. Jaja, kein Problem! – manhattan

Antwort

0

Hat Ihre Immobilie einen Setter (set Accessor). besser überprüfen, dass vor der Einstellung der Eigenschaft wie

if(property != null && property.CanWrite) 
{ 
    property.SetValue(this, value , null); 
} 

BTW, ist es ein Feld oder eine Eigenschaft, die Sie versuchen zuzugreifen? seit du gesagt hast Die Namen der Felder sind OK und existiert

+0

Danke! Ich mache nur Attribute ohne Setter und Getter Accesors, jetzt finde ich einen Weg, um den Namen der Eigenschaft String zu bekommen ... Danke nochmal – manhattan