ホームページ >バックエンド開発 >C++ >C# でリフレクションを使用して文字列プロパティ値を安全に設定する方法

C# でリフレクションを使用して文字列プロパティ値を安全に設定する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-20 10:38:09749ブラウズ

How to Safely Set String Property Values Using Reflection in C#?

リフレクションを使用して文字列型の属性値を設定します

リフレクションを使用して文字列型の属性値を設定する場合、ターゲット属性が他の型を予期している場合、ArgumentException 例外が発生する可能性があります。

解決策: 動的型変換には Convert.ChangeType() を使用します

この問題を解決するには、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>
  1. 属性の取得: propertyInfo = ship.GetType().GetProperty("Latitude") 「Latitude」属性情報を取得します。
  2. 文字列値の変換: Convert.ChangeType(value, propertyInfo.PropertyType) 文字列「5.5」を、属性タイプと一致する倍精度浮動小数点数に変換します。
  3. 属性値の設定: propertyInfo.SetValue(ship, ..., null) 属性を変換後の値に設定します。

注: このソリューションは、Convert.ChangeType() を使用して直接変換できない型に対する例外処理や特殊なケースのロジックを想定していません。

以上がC# でリフレクションを使用して文字列プロパティ値を安全に設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。