【问题标题】:Trying To Get The Name Of A Variable as a String VB.NET试图将变量的名称作为字符串 VB.NET
【发布时间】:2013-01-09 23:03:35
【问题描述】:

我正在尝试将变量的名称作为字符串返回。

所以如果变量是var1,我想返回字符串“var1”。

有什么办法可以做到吗?我听说 Reflection 的方向可能是正确的。

编辑:

我本质上是在尝试简化有组织的树视图的实现。 我有一个方法,你给出两个字符串:rootName 和 subNodeText。 rootName 恰好是一个变量的名称。对此方法的调用是从该变量的 with 块中调用的。我希望用户能够调用 Method(.getVariableAsString, subNodeText) 而不是 Method("Variable", subNodeText)。想要以编程方式获取它的原因是可以简单地复制和粘贴此代码。我不想每次变量被命名为异常时都对其进行调整。

Function aFunction()
   Dim variable as Object '<- This isn't always "variable".
   Dim someText as String = "Contents of the node"

   With variable '<- Isn't always "variable". Could be "var", "v", "nonsense", etc
      'I want to call this
      Method(.GetName, someText)
      'Not this
      Method("Variable",someText)

   End With
End Function

【问题讨论】:

  • 你要这个干什么?
  • 我实际上是在尝试使有组织的树视图的实现更简单。我有一个方法,你给出两个字符串:rootName 和 subNodeText。 rootName 恰好是一个变量的名称。对此方法的调用是从该变量的 with 块中调用的。我希望用户能够调用 Method(.getVariableAsString, subNodeText) 而不是 Method("Variable", subNodeText)。想要以编程方式获取它的原因是可以简单地复制和粘贴此代码。我不想每次变量被命名为异常时都对其进行调整。
  • 您知道,有许多现代编程方法应运而生,以解决在旧的、更程序化的方式中会相当困难的问题。请发布相关代码,以便我们为您提供帮助。
  • @HighCore 用一些示例代码编辑了主要问题。
  • “希望以编程方式获取它的原因是这样可以简单地复制和粘贴此代码” 如果您的代码是以您(或其他人)的方式完成的) 需要从一个地方复制和粘贴代码,这是完全错误的。您将无法获得变量名称,因为这没有意义。显示您的树视图的代码,以便我们更好地理解。

标签: vb.net variables reflection tostring var


【解决方案1】:

现在可以从 VB.NET 14 (More information here) 开始:

Dim variable as Object
Console.Write(NameOf(variable)) ' prints "variable"

编译您的代码时,您分配的所有变量名称都会更改。无法在运行时获取局部变量名称。但是,您可以使用 System.Reflection.PropertyInfo 获取类属性的名称

 Dim props() As System.Reflection.PropertyInfo = Me.GetType.GetProperties(BindingFlags.Public Or _
                                                                                     BindingFlags.Instance Or BindingFlags.DeclaredOnly)

 For Each p As System.Reflection.PropertyInfo In props
     Console.Write(p.name)
 Next

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多