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

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

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-20 10:41:08683ブラウズ

How Can I Set Property Values Using Reflection with String Inputs in C#?

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

オブジェクトを操作するには、多くの場合、値が最初に文字列として提供されている場合でも、プロパティ値を動的に設定する必要があります。 プロパティの型が文字列と異なる場合、これは困難になる可能性があります。 型が一致しない SetValue() を直接使用すると、ArgumentException.

が発生します。

文字列「5.5」を使用して、Ship オブジェクトの「Latitude」プロパティ (数値型) を更新することを検討してください。 解決策は、代入前に文字列を正しいデータ型に変換することです。 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>

このコードは、propertyInfo.PropertyType からのランタイム型情報を利用して、「Latitude」プロパティを設定する前に文字列「5.5」を正しく変換します。このアプローチはさまざまなプロパティ タイプを効果的に処理し、文字列入力を使用した動的なプロパティ値割り当ての堅牢なソリューションを提供します。

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

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