Heim >Backend-Entwicklung >C++ >Wie legt man Eigenschaftswerte mithilfe von Reflection mit String-Eingaben fest?
Verwenden Sie Reflektion, um String-Attributwerte festzulegen
Das Festlegen von Eigenschaftswerten mithilfe von Reflexions- und Zeichenfolgenwerten kann schwierig sein, da möglicherweise Typkonvertierungen erforderlich sind.
Angenommen, es gibt eine Schiffsklasse, die eine Eigenschaft namens Latitude vom Typ Double hat. Der folgende Code versucht, diese Eigenschaft auf den Zeichenfolgenwert „5,5“ festzulegen:
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
Dieser Code löst jedoch eine ArgumentException aus, da der Zeichenfolgenwert nicht direkt in den Double-Typ konvertiert werden kann.
Um dieses Problem zu lösen, können Sie Convert.ChangeType() für die Typkonvertierung verwenden. Mit dieser Funktion können Sie Werte basierend auf Laufzeitinformationen des Zieltyps konvertieren. Der folgende Code demonstriert diesen Ansatz:
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
Durch die Verwendung von Convert.ChangeType() wird der Zeichenfolgenwert erfolgreich in den Double-Typ konvertiert und der Latitude-Eigenschaft zugewiesen. Beachten Sie, dass Sie möglicherweise Ausnahmen behandeln oder eine Sonderfalllogik implementieren müssen, wenn bestimmte Konvertierungstypen nicht unterstützt werden.
Das obige ist der detaillierte Inhalt vonWie legt man Eigenschaftswerte mithilfe von Reflection mit String-Eingaben fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!