ホームページ > バックエンド開発 > C++ > 値が文字列の場合、リフレクションを使用してプロパティの値を設定するにはどうすればよいですか?

値が文字列の場合、リフレクションを使用してプロパティの値を設定するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-20 10:37:09
オリジナル
726 人が閲覧しました

How Can I Set a Property's Value Using Reflection When the Value is a String?

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

紹介: リフレクションを通じてプログラムでオブジェクトを操作するには、多くの場合、さまざまなデータ型の割り当てを使用してプロパティを設定する必要があります。この質問では、文字列値を使用してプロパティを設定するという一般的な状況について説明します。

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

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