2011-05-05 28 views
2

的方法我試圖使用反射代碼,因爲我想要它管理技術人員和其他類型。使用反射我需要調用(T)參數

m_Technician = m_Entities.CreateObject(Of Technician)()  'line#1 
m_Technician.IDTechnician = Guid.NewGuid() 
m_Entities.AddObject("Technicians", m_Technician) 

我用這個代碼和反射來填充實體,它完美的工作。

m_Entity = GetType(RFOPSEntities). _ 
      GetMethod(FillMethodName).Invoke(m_Entities, New Object() {uniqueKey}) 

所以,我想1類似的東西的行號:

m_Entity = GetType(RFOPSEntities). _ 
      GetMethod("CreateObject"). _ 
      Invoke(m_Entities, New Object({GetType("Technician")}) 

我覺得我的困難是要通過(Of Technician)

謝謝

+0

可能重複[如何使用反射來調用泛型方法?(http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method) – usr 2014-05-30 17:10:03

回答

3

可以使用MakeGenericMethod函數生成一個可以從中調用的通用MethodInfo。

m_Entity = GetType(RFOPSEntities). _ 
      GetMethod("CreateObject").MakeGenericMethod(GetType(Technician)). _ 
      Invoke(m_Entities) 
+0

謝謝湯姆,它工作得很好。我忘了這是一個通用的方法,這是有道理的。 – Francis 2011-05-05 13:58:19

+0

現在我想弄清楚如何做第二行至極是設置屬性:m_Technician.IDTechnician = Guid.NewGuid() 它可能是m_entity.IDProduct = Guid.NewGuid(),我想圖out myt,但有時幫助不傷害。謝謝 – Francis 2011-05-05 14:01:04

+0

@Francis很高興它的工作!假設m_Technician是一個對象,並且你想完全通過反射來完成,那麼它必須沿着m_Entity.GetType()。GetProperty(「IDTechnician」)。SetValue(m_Entity,Guid.NewGuid( ), 沒有) – Tom 2011-05-05 14:56:20

相關問題