2013-12-15 2 views
2

나는 C#으로 몇 가지 해결 방법을 보았지만 vb.net을 사용하고 있으며, 속성에 대한 대리인을 호출 할 수는 없습니다. 나는 doN을 알지 못했고, 아무도 모를 것 같습니다. 정직하고 대답을대리인 위임

그래서 만약 누군가 수행합니다 추가 또는 유형 TPropPropertyName라는 속성에 대해 속성

+0

는 당신이 우리에게 C#을 해결 방법을 보여 VB.NET에서 무엇을 찾고 있는지 설명 할 수 있습니까? –

+0

예 분 이내 편집 찾을 수 없음 : S – Mokmeuh

+4

대리인이 대상 메서드가 필요합니다. 따라서 속성을 반환하는 값을 작성하십시오. 그것을 람다 (lambda)로 압축하십시오. –

답변

0

에 대한 대리자를 만드는 기본이되는 구현은 2 가지 방법입니다 방법 :

  • function get_PropertyName() as TProp
  • sub set_PropertyName(value as TProp)

다음은 문자열 속성에 대한 예입니다 :

Public Delegate Function StringGetter() As String 
Public Delegate Sub StringSetter(value As String) 

Class Test 
    Public Property MyProp As String 
End Class 

Public Sub Main() 

    Dim testObj As New Test With {.MyProp = "Hello"} 

    Dim getter = [Delegate].CreateDelegate(GetType(StringGetter), testObj, "get_MyProp") 
    If CType(getter.DynamicInvoke(), String) <> "Hello" Then Throw New Exception("get failed") 

    Dim setter = [Delegate].CreateDelegate(GetType(StringSetter), testObj, "set_MyProp") 
    setter.DynamicInvoke("Hello2") 
    If testObj.MyProp <> "Hello2" Then Throw New Exception("set failed") 

End Sub