vb.返回值的类型



似乎是一个模棱两可的问题,但问题是,我有一些像:

Dim a As MyObject
a = GetData(a.GetType) 
Function GetData(tp as Type)
     DotheWork(tp)
End Function

所以,我想知道是否有任何方法可以省略GetData()中的Type参数,并从赋值左侧的变量中获取它。(基本上是因为我在GetData()中使用反射所以我需要一个来自参数类型的实例)

这可能吗?很多谢谢!

这是不可能的,因为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

相关内容

  • 没有找到相关文章

最新更新