首頁 >後端開發 >C++ >如何在 C# 中使用反射安全地設定字串屬性值?

如何在 C# 中使用反射安全地設定字串屬性值?

Barbara Streisand
Barbara Streisand原創
2025-01-20 10:38:09794瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn