Verwenden Sie Reflektion, um den Attributwert des Zeichenfolgentyps festzulegen
Wenn Sie Reflektion zum Festlegen eines Attributwerts vom Typ „String“ verwenden und das Zielattribut andere Typen erwartet, kann dies zu einer ArgumentException-Ausnahme führen.
Lösung: Verwenden Sie Convert.ChangeType() für die dynamische Typkonvertierung
Um dieses Problem zu lösen, können Sie die Methode Convert.ChangeType() verwenden. Diese Methode verwendet Laufzeitinformationen zum Konvertieren von Datentypen. Es ist jedoch wichtig zu beachten, dass nicht alle Konvertierungen möglich sind.
Codebeispiel:
Bedenken Sie den folgenden Codeausschnitt:
<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>
propertyInfo = ship.GetType().GetProperty("Latitude")
Informationen zum Attribut „Breitengrad“ abrufen. Convert.ChangeType(value, propertyInfo.PropertyType)
Konvertiert die Zeichenfolge „5.5“ in eine Gleitkommazahl mit doppelter Genauigkeit, die dem Attributtyp entspricht. propertyInfo.SetValue(ship, ..., null)
Das Attribut auf den konvertierten Wert setzen. Hinweis: Diese Lösung setzt keine Ausnahmebehandlung oder Sonderfalllogik für Typen voraus, die nicht direkt mit Convert.ChangeType() konvertiert werden können.
Das obige ist der detaillierte Inhalt vonWie kann man String-Eigenschaftswerte mithilfe von Reflection in C# sicher festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!