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

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

DDD
リリース: 2025-01-20 10:27:10
オリジナル
558 人が閲覧しました

How to Set Property Values Using Reflection with String Inputs?

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

リフレクションと文字列値を使用してプロパティ値を設定するのは、型変換が必要になる場合があるため、注意が必要な場合があります。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート