我正在尝试将成员引用传递给另一个方法的参数。这是一个在第一次引用时初始化的惰性加载器属性(参见Name
代码示例中的属性)。目标是能够将Name
属性的引用传递给GetName()
方法,而无需在Get
传递时对其访问器进行评估。相反,我想在堆栈中更深入地引用它,以便Get
在那时触发它的访问器。
在发生 Actions 之后,我越来越接近于弄清楚这一点。在我下面的代码中,我有GetName(Function() (Name))
将属性引用传递给GetName()
. 在GetName()
' 内,我有Name.Invoke()
. 我知道这是可行的,因为我在 get 访问器中放置的断点在通过该方法时没有被触发。它仅在我调用时调用.Invoke()
。但是,我需要能够将 Name 属性的值作为它返回的字符串返回,而不是仅仅触发它而不返回任何内容。
此外,虽然这是在 VB 中,但我也精通 c#,但我可能会询问有关 VB.NET 等效语法的问题。
Class TestClass
Private _Name As String
Private ReadOnly Property Name As String
Get
If _Name Is Nothing Then _Name = "Bob"
Return _Name
End Get
End Property
Sub AccessPropertyValue()
GetName(Function() (Name))
End Sub
Sub GetName(Name As Action)
Name.Invoke()
End Sub
End Class
更新:感谢 ChaosPandion,我能够做到这一点:
Sub AccessPropertyValue()
Dim s As String = GetName(Function() (Name))
End Sub
Function GetName(Name As Func(Of String)) As String
Return Name.Invoke()
End Function
我希望这对其他人有帮助。