紹介: リフレクションを通じてプログラムでオブジェクトを操作するには、多くの場合、さまざまなデータ型の割り当てを使用してプロパティを設定する必要があります。この質問では、文字列値を使用してプロパティを設定するという一般的な状況について説明します。
質問: double 型の Latitude プロパティを持つ Ship クラスを考えてみましょう。リフレクションを使用してこのプロパティを設定してみてください。コードは次のとおりです:
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
ただし、文字列値を double に直接変換できないため、このコードは ArgumentException で失敗します。
解決策: この問題を解決するには、文字列値を PropertyInfo に基づいて正しい型に明示的に変換する必要があります。この目的のための一般的なツールは Convert.ChangeType() です。実行時情報を使用して、IConvertible 型間の変換を行います。
Convert.ChangeType() を使用して変更されたコードは次のとおりです:
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
このコードは、Latitude プロパティを変換された double 値に正常に設定します。
以上が値が文字列の場合、リフレクションを使用してプロパティの値を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。