return 值的 .NET 类型

.NET Type of return value

似乎是一个模棱两可的问题,但问题是我有类似的东西:

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 并且您的函数没有 return 任何东西,因此 a 将在 [=12= 之后被分配任何东西],也是。

也许您想实现这样的目标:

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