2016-06-21 7 views
-6

Ich habe dieses Beispiel gefunden, den Wert einer Klasse-Eigenschaft festlegen:Wie kann ich den Wert einer Variablen einstellen?

Ship ship = new Ship(); 
string value = "5.5"; 
var property = ship.GetType().GetProperty("Latitude"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

Aber ich möchte Wert einer Variablen setzen in meinem „dieses“.

das heißt in meinem Haupt-Form habe ich eine private double "Momentum"

string value = "5.5"; 
var property = this.GetType().GetProperty("Momentum"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

funktioniert das nicht - "Eigentum" ist null.

Wie ändere ich den obigen Code, um dies zu erreichen?

+1

Was ist 'selbst'? – JLRishe

+2

'this.Momentum = 5.5' - dh warum verwenden Sie die Reflexion an erster Stelle? – Jamiec

+1

Private Doppel was? Feld oder Eigentum? – Denis

Antwort

0

Ernsthaft, warum verwenden Sie Reflexion, wenn Sie den Feldwert aus einer Variablen setzen müssen, die Sie besitzen?

Okay, lassen wir das vergessen ... Wenn Sie ein Feld haben und nicht eine Eigenschaft, die Sie benötigen GetField verwenden:

var value = "5.5"; 
var field = this.GetType().GetField(nameof(Momentum), BindingFlags.NonPublic); 
field.SetValue(self /* or this */, value); 

Auch dies könnte ein guter Ort sein nameof zu verwenden, aber das ist nur ein Vorschlag.

+0

'Console.WriteLine (" Mom: "+ Momentum); var field = this.GetType(). GetField ("Momentum"); field.SetValue (Feld, "5.5"); Console.WriteLine ("Mom:" + Momentum); 'Funktioniert nicht? – ManInMoon

+0

Tut mir leid, es schien mir ein Double, könnte auch eine Saite sein. Wenn Sie den richtigen Typ verwenden, ist es in Ordnung. –

+0

mein "Feld" ist null.
the this.GetType(). GetField ("Momentum") funktioniert nicht – ManInMoon