2010-01-07 3 views
0

VB에서 ICommandSource를 구현하려고 시도한 적이 있습니까? Microsoft에서 제공하는 예제는 C#에 있으며 VB는 암시 적 구현을 ​​허용하지 않으므로이 인터페이스는 VB에서 inachievable과 같습니다!VB에서 ICommandSource를 구현할 수 없습니다.

http://msdn.microsoft.com/en-us/library/ms771361.aspx

+0

확인이 [SO 링크 (http://stackoverflow.com/questions/1685976/how-can-i-create-an-interface-in-vbnet- 기존 속성에 다시 그들을 암시 적 - 함축). 결국 C#에서이 작업을 수행해야 할 수도 있습니다. –

답변

1

그것은 당신이 그것을 구현하기 위해 원하는 클래스에 따라 달라집니다. 당신이 (당신이 인터페이스를 구현하고) 자신의 클래스의 명령, CommandParameter 및 CommandTarget 속성을 도입하는 경우는 다른 인터페이스처럼 구현할 수 있습니다

Public ReadOnly Property Command() As ICommand 
    Implements ICommandSource.Command 
    Get 
    ' implementation goes here 
    End Get 
End Property 

당신은 여전히에 대한 DP를 사용할 수 있습니다 그런데 구현 : Implements 지시문은 CLR 속성에 있으며 getter 및 setter의 "구현하지 마십시오"구현을 방해하지 않습니다.

이미 구현하려는 클래스에 Command, CommandParameter 및 CommandTarget 속성이 (상속 된) 있고 인터페이스 구현에서이를 다시 사용하려면 새 이름으로 새 속성을 만들어야하며 다음과 같이 선언해야합니다. 인터페이스를 구현하고

Public ReadOnly Property ICommandSource_Command() As ICommand 
    Implements ICommandSource.Command 
    Get 
    Return Me.Command ' the existing implementation that can't be made implicit 
    End Get 
End Property 
+0

그게 내가 한 일이야, 내가 implemetor 속성을 개인적으로 한 것만 제외하고, 어쨌든 DP에 의해 노출되었다. 내가 실수를했다면 나를 바로 잡는다. – Shimmy

+0

아니요. 개인적으로는 비공개로 설정하는 것이 좋다고 생각합니다. 바인딩 용도로는 DP를 사용하고 클래스 외부에 CLR 래퍼 속성이 필요하지 않으면 공개하지 않는 것이 좋습니다. – itowlson

+0

당신은 내 표를 얻었습니다. – Shimmy