将方法参数转换为数组

时间:2011-04-17 15:41:35

标签: vb.net

是否有可以将方法参数转换为数组的Visual Basic.NET方法?

例如,而不是:

Function functionName(param1 as object, param2 as object) as object
ArrayName = {param1, param2}
你可以做点什么:

Function functionName(param1 as object, param2 as object) as object
ArrayName = MethodThatGetsAllFunctionParams

真的很好奇。

2 个答案:

答案 0 :(得分:3)

看看ParamArrays。我认为这可以解决你的要求吗?

http://msdn.microsoft.com/en-us/library/538f81ec%28v=VS.100%29.aspx

编辑:

您可以使用当前的功能签名初始化自定义集合

Public Class CustomCollection(Of T)
    Inherits System.Collections.Generic.List(Of T)

    Sub New(param1 As T, param2 As T)
        MyBase.New()
        MyBase.Add(param1)
        MyBase.Add(param2)
    End Sub
End Class

然后使用

调用该函数
Dim result = functionName(New CustomCollection(Of Object)(param1, param2))

函数签名将更改为:

Public Function functionName(ByVal args As CustomCollection(Of Object)) As String

答案 1 :(得分:3)

没有办法做到这一点。语言本身不允许这样做。您可以使用反射来获取执行StackFrame的当前执行方法。但即便如此it’s still impossible也要检索参数值。

唯一的解决方案是通过在方法调用中引入切入点来“修补”应用程序。相关联的答案提到了这种可能性。