別のメソッドのパラメーターにメンバー参照を渡そうとしています。これは、最初の参照で初期化される遅延ローダー プロパティです (Name
コード例のプロパティを参照)。目標は、アクセサーが通過するときに評価されることなく、Name
プロパティの参照をGetName()
メソッドに渡すことができるようにすることです。代わりに、そのアクセサーがその時点でトリガーされるGet
ように、スタックのより深い部分を参照したいと考えています。Get
アクションが発生した後、これを理解することに近づいています。以下のコードには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
これが他の人に役立つことを願っています。