vb.net - 检索对象名称
问题描述
我需要检索实例对象的名称(不是类型名称...)
我已经看到 GetProperties() 函数获取子属性名称,但我需要当前对象的名称
Public Class Class1
Private mValore As String
Public Property Valore As String
Get
Return mValore
End Get
Set(value As String)
mValore = value
End Set
End Property
End Class
Public Class Class2
Private mMickey As new Class1
Public Property Mickey As Class1
Get
Return mMickey
End Get
Set(value As Class1)
mMickey = value
End Set
End Property
End Class
我需要在 Class1 中获取 Class2 中实例化对象的名称:“Mickey”
可能吗 ?感谢所有将回答我的建议。
解决方案
正如 Hans Passant 所说,对象没有名称。
因此,如果您确实需要名称,可以将它们作为属性或字段引入。您可以使用CallerMemberNameAttribute自动将调用者名称传递给例如构造函数。
另一件事,对象可能是在外部创建Class2
的,实际上是在Mickey ... Set
setter 中,您mMickey
从外部某处将字段分配给对象,因此该对象可能具有不同的名称。我宁愿创建对象的副本而不是仅仅分配,然后我们可以为它分配任何名称,它不会与以前的名称冲突。一个例子可能是:
Imports System.Runtime.CompilerServices
Public Class Class1
Private mValore As String
Public ReadOnly Name As String
Public Sub New(mValore As String, <CallerMemberName> Optional callerMemberName As String = Nothing)
Me.mValore = mValore
Me.Name = callerMemberName
End Sub
Public ReadOnly Property Valore As String
Get
Return mValore
End Get
End Property
End Class
Public Class Class2
Private mMickey As Class1
Public Property Mickey As Class1
Get
Return mMickey
End Get
Set(value As Class1)
mMickey = New Class1(mValore:=value.Valore)
End Set
End Property
End Class
推荐阅读
- python - 列表作为 pandas 函数的参数
- python-3.x - ImportError:动态模块未定义模块导出功能
- python - AttributeError:“系列”对象没有属性“列”
- excel - 将多个值选择到一个单元格中的 VBA VLookup
- excel - Excel公式如果单元格(具有日期和时间)包含时间范围,则显示返回值
- mysql - 如何估计 MySQL InnoDB 中的宽行大小(1000 列)?
- asp.net-core - 用于 JsonResult 的 asp.net core PascalCase 仅用于一种方法
- ruby-on-rails - 使用 Rails 5.2 播种时 ActiveRecord 验证失败
- windows - 在 Windows 上使用 bazel 的 Google glog:没有得到有用的堆栈跟踪
- sql - 如何将 Toad Data 模型导入 Erwin Data Modeler?