는 다음 시나리오를 고려하십시오 :늦은 바인딩 기술은 아마도
Class Class1
Function Func() as String
End Function
End Class
Class Class2
Function Func() as String
End Function
Function Func2() as String
End Function
End Class
Class Class3
Function GetClassObject as Object
If (certain condition meets)
return new Class1();
Else
return new Class2();
End If
End Function
Main()
Object obj1 = GetClassObject();
obj1.Func(); // Error: obj1.Func() is not defined:
End Main
End Class
질문 : 어떤 이유로 내가 공통의 인터페이스 클래스에서 클래스 1과 Class2의를 상속 할 수 없습니다 것을 조건으로 주어진 obj1.Func()를 액세스하는 방법 ?
감사합니다업데이트 : 다음과 내가 문제를 해결하는 데 실패 한 가지 방법이 될 때 :
Interface ICommon
Function Func() as string
End Interface
Class Class3
...
Main()
Dim obj1 as ICommon = TryCast(GetClassObject(), ICommon); //Error: obj1 is "Nothing"
obj1.Func()
or simply:
TryCast(GetClassObject(), ICommon).Func() //Error: obj1 is Nothing
End Main
...
End Class
후기 바인딩은 소스 코드 파일 맨 위에 'Option Strict Off'가 필요합니다. VB.NET 코드를 작성하려고하면 VB와 C#이 이상하게 혼합되어 결코 컴파일되지 않습니다. –
한스, 우리가 여러 언어로 프로그램해야 할 때 이런 일이 일어납니다. 나에게 상기시키기 위해 컴파일러에 맡긴다;) – user1683046