왜요? 인터페이스를 구현하기 위해 물건을 재 발전합니까?! vb.net에서
-
05-07-2019 - |
문제
나는 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
). 코드를 사용하면이 둘 사이에 연결을 명시 적으로 만듭니다.
다른 팁
자녀 수업을 구현하기 때문에 재정의해야합니다. 어쨌든 구현되는 기본 케이스에서 물려받는다면 필요하지 않으면 필요하지 않을 것입니다.