360 Stimmen

Einstellung einer Eigenschaft durch Reflexion mit einem String-Wert

Ich möchte eine Eigenschaft eines Objekts über Reflection mit einem Wert des Typs string . Angenommen, ich habe zum Beispiel eine Ship Klasse, mit einer Eigenschaft von Latitude die ein double .

Ich würde gerne Folgendes tun:

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, value, null);

So wie es ist, führt dies zu einem ArgumentException :

Objekt vom Typ 'System.String' kann nicht in den Typ 'System.Double' konvertiert werden.

Wie kann ich einen Wert in den richtigen Typ konvertieren, basierend auf propertyInfo ?

1voto

Marco Sotto Punkte 1

Der folgende Code sollte Ihr Problem lösen:

item.SetProperty(prop.Name, Convert.ChangeType(item.GetProperty(prop.Name).ToString().Trim(), prop.PropertyType));

-11voto

clemahieu Punkte 1439

Möchten Sie mit Reflection herumspielen oder eine Produktionssoftware erstellen? Ich würde fragen, warum Sie Reflection verwenden, um eine Eigenschaft zu setzen.

Double new_latitude;

Double.TryParse (value, out new_latitude);
ship.Latitude = new_latitude;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X