【发布时间】:2011-09-16 22:26:31
【问题描述】:
我的一个课程似乎对我的项目的其余部分不可见。我想知道是否必须以某种方式初始化它,然后才能使用它的公共内容。
Class1 的函数和方法立即出现在 IntelliSense 中,但 Class2 被视为一般(未知)对象。
我在Class1 和Class2 中有一些Public Shared 函数。我可以调用函数使用
Class1.myPublicSharedFunction()
通常。但是,当我使用 Class2 中的任何函数尝试此操作时,我得到了错误:
Error 1 Option Strict On disallows late binding.
即使它们的类型当然是声明的。如果我将一个工作函数从Class1 复制并粘贴到Class2 并尝试调用它,它就会开始给出相同的错误。我在Class2 中声明的任何测试函数都无法识别其类型,因此被指控尝试进行后期绑定。
这两个类都是公共的,所有提到的函数都是Public Shared。我不明白是什么让课程的工作方式不同。就好像我需要在 VB 知道它的函数类型之前加载或编译 Class2,但这些东西在 VB 中应该是自动的。
这可能是什么原因?
当我开始输入 Class2. 时,IntelliSense 列表是一个函数,而 Class1 被识别为一个类。
编辑:
如果我将Class2 的确切内容复制到新类中,只需将Public Class ... 行更改为新名称,一切正常。我想可能是名字太长,所以我把这个类复制到AnotherClassWithAReallyLongName,但是这个也有用。
但是,如果我删除class2,然后重新添加并将其内容粘贴回去,它仍然无法正常工作。
【问题讨论】:
-
你能和我们分享一下类声明以及你使用代码中的类的方式吗?
-
@Davide 类的内容很好,因为如果我将 class2 复制到另一个类,一切正常。 class2 的名称似乎有问题,将更新我的问题。
-
您的代码中是否还有其他内容,无论是您编写的还是在名为 'class2' 的不同命名空间中?如果现在您已将其重命名并在 vb 中输入
class2.您会得到任何智能感知吗? -
@CResults Bingo,我发现类中神奇地添加了以下内容:“Private Function FloatingNumbersWhileAdd() As Object Throw New NotImplementedException End Function”。那解决了它。太浪费时间了,我不习惯这种自动出现的东西。谢谢!
标签: vb.net class shared public option-strict