2011-05-05 26 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

相关问题