首頁 > 後端開發 > C++ > 如何使用反射和字串輸入來設定屬性值?

如何使用反射和字串輸入來設定屬性值?

DDD
發布: 2025-01-20 10:27:10
原創
558 人瀏覽過

How to Set Property Values Using Reflection with String Inputs?

利用反射設定字串屬性值

使用反射和字串值來設定屬性值可能比較棘手,因為可能需要進行類型轉換。

假設有一個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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板