獲取C 物件中呼叫屬性的屬性名

2021-06-09 06:17:19 字數 758 閱讀 4164

學習windows phone程式開發已經很長時間,對於mvvm也算比較熟悉了。最近自己打算寫一寫mvvm深入一點的東西,順利的實現了model和viewmodel註冊的**。回頭一用,突然看到我要通知介面屬性的改變是要通過封裝propertychanged事件中傳入字串的屬性名稱。這樣每個屬性修改,我就得修改我的屬性名字串,這樣豈不是很不方便?但在mvvm light中,可以通過在表示式樹中傳入要使用的屬性名的屬性呼叫即可,不由大為震動。

後來多方查證,以下**可以實現獲取乙個屬性的屬性名稱字串:      

public string getpropertyname(expression> expr)

假設需要獲取的屬性的名稱是age,可以通過如下方式獲取到age的字串名稱即「age」:

console.writeline(getpropertyname(o => o.age));
這裡的o是表示式中的物件。這句**會輸出字串「age」到控制台上面。

但是如果屬性的資料型別不是int型別,使用上面的getpropertyname方法就不靈光了。虧得在寫model和viewmodel的註冊模組**時已經仔細研究過泛型,正好在這裡也用上,於是最終完整版本的方法出現在了下面:

public string getpropertyname(expression> expr)

這樣不論屬性的返回型別是什麼,都可以獲取到屬性的字串名稱了。

C 遍歷自定義物件,獲取屬性名 屬性值,設定屬性值

physiqueoutmodel physiqueoutmodel new physiqueoutmodel 自定義物件 type t physiqueoutmodel.gettype 獲得該類的type foreach propertyinfo pi in t.getproperties stri...

C 按屬性名反射獲取和設定物件屬性值

using system using system.collections.generic using system.reflection namespace test public class product set private int pkid public string productna...

獲取屬性名 PropertyNameHelper

獲取屬性名 propertynamehelper namespace ncs.infrastructure.querying return expr.tostring substring expr.tostring indexof 1 public static string resolveprop...