請考慮以下情形:與接口後期綁定技術也許
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
問題:如何因爲出於某種原因,我不能從一個共同的接口類繼承的Class1和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