문제

나는 vb.net v2에서 일합니다

인터페이스가 있습니다 Imyinterface 그리고이 인터페이스는 방법을 구현합니다 mymethod.

나는 물체가있다 myObjectbase. 이 객체에는 (동일한) 메소드가 포함되어 있습니다 mymethod.

1) 지금 내가한다면 MyObject Inherits MyObjectBase Implements IMyInterface 재정의해야합니까? (그림자, 재정의) MyMethod 에서 MyObject 수업?

2) 대신 지금 무엇을한다면 MyMethod 방법 나는 MyEvent 이벤트?

감사.

도움이 되었습니까?

해결책

vb.net에서는 필요합니다 수동으로 인터페이스 계약을 구현과 연결하십시오. 다음 예를 살펴보십시오.

Interface MyInterface
    Sub Foo()
End Interface

Class TestClass
    Implements MyInterface

    Public Sub Test() Implements MyInterface.Foo
        Console.WriteLine("Test")
    End Sub

    Public Sub Foo()
        Console.WriteLine("Foo")
    End Sub
End Class

그런 다음 다음 코드와 출력을 살펴보십시오.

Dim x As New TestClass()
x.Foo()                           ' Output: Foo '
Dim y As MyInterface = x
y.Foo()                           ' Output: Test '

이것은 인터페이스를 구현하는 이점이 있습니다 당신이 원하는대로 당신의 기능의 이름을 지정할 때 당신을 제한하지 않습니다.. 단점은 클래스 메소드를 Implements 예어.


설명에 대해 너무 많이. 이제 내가 당신의 문제에 도달하게하겠습니다 : 당신은 만들 수 없기 때문에 Button IvisibleChanged를 구현하면 다음과 같은 작업을 수행 할 수 있습니다.

Private Event MyVisibleChanged() Implements IVisibleChanged.VisibleChanged

Private Sub RethrowVisibleChanged() Handles MyBase.VisibleChanged
    RaiseEvent MyVisibleChanged()
End Sub

MyBase 슈퍼 클래스를 참조하는 vb.net 키워드입니다. 마찬가지로, 경우 MyMethod, 넌 할 수있어

Private Sub MyInterfaceMethod() Implements IMyInterface.Method
    MyBase.Method()
End Sub

이것은 불필요한 추가 작업처럼 보일 수 있지만 어떤 식 으로든 의미가 있습니다. Button.VisibleChanged 그리고 IVisibleChanged.VisibleChanged 동일한 이름을 가진 두 가지 의미론이있는 이벤트 일 수 있습니다 (결국 Button 하지 않습니다 구현하다 IVisibleChanged). 코드를 사용하면이 둘 사이에 연결을 명시 적으로 만듭니다.

다른 팁

자녀 수업을 구현하기 때문에 재정의해야합니다. 어쨌든 구현되는 기본 케이스에서 물려받는다면 필요하지 않으면 필요하지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top