リフレクションを使用して文字列属性値を設定します
リフレクションと文字列値を使用してプロパティ値を設定するのは、型変換が必要になる場合があるため、注意が必要な場合があります。
Double 型の Latitude というプロパティを持つ Ship クラスがあるとします。次のコードは、このプロパティを文字列値「5.5」に設定しようとします:
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
ただし、文字列値を double 型に直接変換できないため、このコードは ArgumentException をスローします。
この問題を解決するには、型変換に Convert.ChangeType() を使用します。この関数を使用すると、ターゲット タイプの実行時情報に基づいて値を変換できます。次のコードは、このアプローチを示しています:
<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>
Convert.ChangeType() を使用すると、文字列値が double 型に正常に変換され、Latitude プロパティに割り当てられます。 一部の特定のタイプの変換がサポートされていない場合は、例外を処理するか、特殊なケースのロジックを実装する必要がある場合があることに注意してください。
以上が文字列入力でリフレクションを使用してプロパティ値を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。