名称空间和基 class 无法识别 - 为什么?
Namespace and base class not recognized - Why?
所以我正在做别人给我的项目。
在项目中,有一个main Namespace
,姑且称之为“Program
”。
在该命名空间中有几个不同的 classes.
现在我必须从命名空间 Devices
中的 class 派生。
已经有另一个 class 派生自对象 Device
。
所以我继续前进,创建了我的 class,将其包含在 Devices
命名空间中,从 Device
派生并完成了我的工作。
但不久之后,我无法使用任何基本变量、方法等。整个智能感知不适用于 class。
更糟糕的是,它似乎没有包含在程序集中。
如何让我的 class 被 Intellisense、程序集等识别?我做了一个测试 class 只有这样:
Namespace Devices
Class Testcle
' ... Nothing
End Class
End Namespace
而且效果非常好。它被包含在程序集中,Intellisense 工作等
文件夹结构看起来有点像这样:
[Project]
↳ [-] Devices (Folder and Namespace)
[-] AlreadyExistingClassDerivedFromDevice (Folder)
↳ AlreadyExistingClassDerivedFromDevice.vb
[-] MyClassDerivedFromDevice (Folder)
↳ MyClassDerivedFromDevice.vb
↳ [+] Other (Folder)
↳ Testcle.vb
↳ Device.vb
我有什么遗漏的吗?比如有没有我必须激活的隐藏设置?
编辑:
声明看起来有点像这样(但在不同的文件中):
Device.vb
Namespace Devices
Public MustInherit Class Device
' ...
End Class
End Namespace
这个有效:
AlreadyExistingClassDerivedFromDevice.vb
Namespace Devices
Public NotInheritable Class AlreadyExistingClassDerivedFromDevice
Inherits Device
' ...
End Class
End Namespace
这不起作用:
MyClassDerivedFromDevice.vb
Namespace Devices
Public NotInheritable Class MyClassDerivedFromDevice
Inherits Device
' ...
End Class
End Namespace
与继承 classes 完全没有区别。只有内部运作。但是那些不应该影响 ctor 或 Intellisense 或其他东西的可访问性,对吧?
我写这个作为答案是因为它解决了我的问题。但是,我不知道是什么原因造成的,也不知道以 'proper' 方式实际解决问题的确切步骤。
我做的是:
我将文件 MyClassDerivedFromDevice.vb
重命名为 MyClassDerivedFromDevice_Old.vb
,创建了一个名为 MyClassDerivedFromDevice.vb
的新 class 并在添加命名空间并确保 Intellisense 和一切正常后,我刚刚从 MyClassDerivedFromDevice_Old.vb
复制代码(在 Namespace Devices
到 End Namespace
行之后复制到 MyClassDerivedFromDevice.vb
.
问题解决了。
短版:
1) 将 NotWorkingClass.vb
重命名为 NotWorkingClass_Old.vb
2) 添加名称为 NotWorkingClass.vb
的新 class。
3) 添加命名空间到 NotWorkingClass.vb
.
4) 检查是否一切正常(Intellisense 等)并被 Visual Studio 识别。
5) 复制从 Namespace X
之后开始到 End Namespace
之前的所有代码,从 NotWorkingClass_Old.vb
到 NotWorkingClass.vb
(现在应该可以工作)。
所以我正在做别人给我的项目。
在项目中,有一个main Namespace
,姑且称之为“Program
”。
在该命名空间中有几个不同的 classes.
现在我必须从命名空间 Devices
中的 class 派生。
已经有另一个 class 派生自对象 Device
。
所以我继续前进,创建了我的 class,将其包含在 Devices
命名空间中,从 Device
派生并完成了我的工作。
但不久之后,我无法使用任何基本变量、方法等。整个智能感知不适用于 class。 更糟糕的是,它似乎没有包含在程序集中。
如何让我的 class 被 Intellisense、程序集等识别?我做了一个测试 class 只有这样:
Namespace Devices
Class Testcle
' ... Nothing
End Class
End Namespace
而且效果非常好。它被包含在程序集中,Intellisense 工作等
文件夹结构看起来有点像这样:
[Project]
↳ [-] Devices (Folder and Namespace)
[-] AlreadyExistingClassDerivedFromDevice (Folder)
↳ AlreadyExistingClassDerivedFromDevice.vb
[-] MyClassDerivedFromDevice (Folder)
↳ MyClassDerivedFromDevice.vb
↳ [+] Other (Folder)
↳ Testcle.vb
↳ Device.vb
我有什么遗漏的吗?比如有没有我必须激活的隐藏设置?
编辑: 声明看起来有点像这样(但在不同的文件中):
Device.vb
Namespace Devices
Public MustInherit Class Device
' ...
End Class
End Namespace
这个有效:
AlreadyExistingClassDerivedFromDevice.vb
Namespace Devices
Public NotInheritable Class AlreadyExistingClassDerivedFromDevice
Inherits Device
' ...
End Class
End Namespace
这不起作用:
MyClassDerivedFromDevice.vb
Namespace Devices
Public NotInheritable Class MyClassDerivedFromDevice
Inherits Device
' ...
End Class
End Namespace
与继承 classes 完全没有区别。只有内部运作。但是那些不应该影响 ctor 或 Intellisense 或其他东西的可访问性,对吧?
我写这个作为答案是因为它解决了我的问题。但是,我不知道是什么原因造成的,也不知道以 'proper' 方式实际解决问题的确切步骤。
我做的是:
我将文件 MyClassDerivedFromDevice.vb
重命名为 MyClassDerivedFromDevice_Old.vb
,创建了一个名为 MyClassDerivedFromDevice.vb
的新 class 并在添加命名空间并确保 Intellisense 和一切正常后,我刚刚从 MyClassDerivedFromDevice_Old.vb
复制代码(在 Namespace Devices
到 End Namespace
行之后复制到 MyClassDerivedFromDevice.vb
.
问题解决了。
短版:
1) 将 NotWorkingClass.vb
重命名为 NotWorkingClass_Old.vb
2) 添加名称为 NotWorkingClass.vb
的新 class。
3) 添加命名空间到 NotWorkingClass.vb
.
4) 检查是否一切正常(Intellisense 等)并被 Visual Studio 识别。
5) 复制从 Namespace X
之后开始到 End Namespace
之前的所有代码,从 NotWorkingClass_Old.vb
到 NotWorkingClass.vb
(现在应该可以工作)。