似乎是一个含糊不清的问题,但事实是我有类似的东西:
Dim a As MyObject
a = GetData(a.GetType)
Function GetData(tp as Type)
DotheWork(tp)
End Function
所以,我想知道是否有任何方法可以省略GetData()中的Type参数,并从我在赋值左侧的变量中获取它。 (基本上因为我在GetData()中使用Reflection,所以我需要一个来自参数类型的实例)
可能吗???非常感谢!
答案 0 :(得分:2)
这是不可能的,因为GetData()
在分配之前进行了评估。您可以做的是通用方法:
dim a as MyObject = GetData(of MyObject)()
Function GetData(Of T)()
Dim _t As Type = GetType(T)
DotheWork(_t)
End Function
我将如何做到这一点。
请注意,初始代码中的a.GetType
会失败,因为a是Nothing,而且您的函数不会返回任何内容,因此a
之后也不会分配GetData()
。
也许你想要达到这样的目标:
Function GetData(Of T As { IMyType, New })()
Dim instance As T = Activator.CreateInstance(Of T)()
DotheWork(instance)
Return instance
End Function
Function DotheWork(instance As IMyType)
instance.Init()
End Function
Interface IMyType
Sub Init()
End Interface