利用反射設定字串屬性值
使用反射和字串值來設定屬性值可能比較棘手,因為可能需要進行類型轉換。
假設有一個Ship類,它有一個名為Latitude的屬性,類型為double。以下程式碼嘗試將此屬性設為字串值"5.5":
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
然而,這段程式碼會拋出一個ArgumentException異常,因為字串值無法直接轉換為double類型。
為了解決這個問題,可以使用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>
透過使用Convert.ChangeType(),字串值成功轉換為double類型並賦值給Latitude屬性。 請注意,如果某些特定類型的轉換不受支持,則可能需要處理異常或實現特殊情況邏輯。
以上是如何使用反射和字串輸入來設定屬性值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!