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