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