我有一個這樣的物件
oldEntity
Active: true
ActiveDirectoryName: ""
ArchiveConceptValueList: null
AsgScndCnpRangeDictionary: Count = 0
AssignedRuleList: {NHibernate.Collection.Generic.PersistentGenericBag<GTS.Clock.Model.AssignedRule>}
AssignedScndCnpRangeList: {NHibernate.Collection.Generic.PersistentGenericBag<GTS.Clock.Model.AssignedScndCnpRange>}
AssignedScndCnpRangePeresentList: {NHibernate.Collection.Generic.PersistentGenericBag<GTS.Clock.Model.AssignedScndCnpRange>}
AssignedWGDShiftList: {NHibernate.Collection.Generic.PersistentGenericBag<GTS.Clock.Model.AssignedWGDShift>}
AssignedWorkGroupList: {GTS.Clock.Model.PersonWorkGroup, GTS.Clock.Model.PersonWorkGroup}
Assistant: null
BarCode: "0451343786"
BasicTrafficController: {GTS.Clock.Model.Concepts.BasicTrafficController}
BasicTrafficList: {}
BudgetList: null
CFPNeedUpdate: false
CalcDateZone: null
CardNum: "2465"
CartOrgan: {GTS.Clock.Model.Charts.Department}
CheckEnterAndExitInRequest: false
CostCenter: {GTS.Clock.Model.BaseInformation.CostCenter}
CurrentActiveContract: null
CurrentActiveDateRangeGroup: null
CurrentActiveRuleGroup: null
CurrentActiveWorkGroup: null
CurrentRangeAssignment: null
CurrentYearBudgetList: {NHibernate.Collection.Generic.PersistentGenericBag<GTS.Clock.Model.Concepts.CurrentYearBudget>}
DelayCartableList: {}
Department: {GTS.Clock.Model.Charts.Department}
DepartmentID: 0
...
我想要部門的名稱欄位。除了像這樣 oldEntity 中
的 Department :以及像這樣的 Department 欄位的屬性
:

一旦我使用下面的代碼通過反射獲取部門的名稱欄位,我得到了這個錯誤
oldEntity.GetType().GetProperty("Department").GetValue("Name", null);
物件與目標型別不匹配。
uj5u.com熱心網友回復:
您正在嘗試獲取屬性的值,就好像它是的屬性一樣string- 第一個引數GetValue需要是您從中獲取屬性的物件(oldEntity在本例中)。所以你可以得到這樣的部門:
object department = oldEntity.GetType().GetProperty("Department").GetValue(oldEntity, null);
要獲得Name財產(我希望它是財產而不是公共領域),您需要再次做同樣的事情:
object name = department.GetType().GetProperty("Name").GetValue(department, null);
但是,您可以更簡單地使用動態型別來完成這一切:
dynamic entity = oldEntity;
string name = entity.Department.Name;
請注意,沒有對Department或Name部分(或結果型別為string)的編譯時檢查,但這與基于反射的代碼相同。動態型別只會在執行時為您進行反射。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402861.html
標籤:
