2011-06-17 50 views
1

我的一個類似乎對我的項目的其餘部分是看不見的。我想知道在我能使用它的公共資料之前,我是否需要初始化它。VB.NET沒有看到一些類

Class1的功能和方法立即出現在IntelliSense中,但Class2被視爲一般(未知)對象。

我有一些Public Shared函數Class1Class2。我可以使用

Class1.myPublicSharedFunction() 

正常。然而,當我嘗試這與Class2任何功能,我得到的錯誤:

Error 1 Option Strict On disallows late binding. 

即使它們的類型,當然聲明。如果我將Class1的工作函數複製並粘貼到Class2並嘗試調用它,它會開始給出相同的錯誤。我在Class2中聲明的任何測試函數都沒有得到其類型的識別,因此被指控嘗試進行後期綁定。

這兩個類都是公開的,所有提到的功能都是Public Shared。我不明白是什麼使這些類的工作方式不同。就好像我需要在VB知道它的函數類型之前加載或編譯Class2,但這些東西在VB中被認爲是自動的。

這可能是什麼原因造成的?

當我開始鍵入Class2.時,智能感知列表是作爲函數,而Class1被識別爲一個類。

編輯: 如果我將Class2的確切內容複製到新類中,只將行Public Class ...更改爲新名稱,一切正常。我認爲這可能是因爲名字太長,所以我把課程複製到AnotherClassWithAReallyLongName,但是這個也有效。
但是,如果我刪除class2,並重新添加並粘貼其內容,它仍然不起作用。

+1

您可以與我們分享類聲明以及您使用代碼中類的方式嗎? – 2011-06-17 05:58:21

+0

@Davide類的內容很好,因爲如果我將class2複製到另一個類,所有東西都可以工作。 class2的名字似乎有問題,會更新我的問題。 – Toerndev 2011-06-17 06:54:33

+0

你的代碼中是否還有別的東西,或者是你寫的,或者是名爲'class2'的不同命名空間?如果現在你已經重命名並鍵入'class2.'進入vb你是否有任何intellisense? – CResults 2011-06-17 07:02:39

回答

1

根據評論,您的代碼中名爲`Class2'的其他部分隱藏了您的新類定義。刪除/重命名它,你的班級將工作。

+0

是的,謝謝! 你知道在什麼情況下代碼塊會出現?因爲我當然沒有把它放在那裏。 – Toerndev 2011-06-18 00:32:17

+0

這聽起來像VS將添加到sy的代碼「不要忘記實現此功能」 - 例如,當您覆蓋具有標記爲「MustOverride」的函數的baee類時。在特殊情況下,我不是100%確定! – CResults 2011-06-18 07:37:02