C# 如何避免在Monodevelop中键入c对象的完整命名空间层次结构(“使用”不起作用)?
我在库中有一个类似于C# 如何避免在Monodevelop中键入c对象的完整命名空间层次结构(“使用”不起作用)?,c#,import,namespaces,monodevelop,C#,Import,Namespaces,Monodevelop,我在库中有一个类似于My.Namespace.MyObject的命名空间层次结构。我的理解是,如果我使用.Namespace包含在源文件的顶部,我应该能够直接使用对象。不幸的是,只有当我键入整个My.Namespace.MyObject时,它才起作用,而Namespace.MyObject和MyObject都不能单独起作用。在尝试研究这一点时,我发现当类和名称空间共享名称时,可能会发生这种情况,但对我来说并非如此。因为“使用不起作用”很难在谷歌上搜索到,所以我没能找到更多可能相关的信息 下面是一
My.Namespace.MyObject
的命名空间层次结构。我的理解是,如果我使用.Namespace包含代码>在源文件的顶部,我应该能够直接使用对象
。不幸的是,只有当我键入整个My.Namespace.MyObject
时,它才起作用,而Namespace.MyObject
和MyObject
都不能单独起作用。在尝试研究这一点时,我发现当类和名称空间共享名称时,可能会发生这种情况,但对我来说并非如此。因为“使用不起作用”很难在谷歌上搜索到,所以我没能找到更多可能相关的信息
下面是一个完整的例子。在一个项目中,我做:
namespace My {
namespace Namespace {
public struct MyObject {}
}
}
然后我构建了一个dll文件。在第二个项目中,我添加dll作为引用,然后执行以下操作:
使用My.Namespace
public class AnotherObject
{
public static void Main()
{
//results in a compilation error, while My.Namespace.MyObject doesn't
MyObject a;
}
}
项目A,编译成LibraryTest.dll
:
namespace FirstLevel
{
namespace SecondLevel
{
public class LibraryClass
{
public LibraryClass()
{
}
static void Main()
{
}
}
}
}
Project B,只是一个控制台应用程序,使用Project a库:
using FirstLevel.SecondLevel;
namespace ConsoleTest
{
class MainClass
{
public static void Main (string[] args)
{
LibraryClass test = new LibraryClass();
}
}
}
重要提示:确保将您的库添加到其他项目中的参考
- 右键单击
参考
->编辑参考…
- 切换到
.NET汇编
- 点击
浏览…
- 选择您的库
另请参见随附的屏幕截图
基本上,我会避免使用名称对象
,我怀疑问题在于您还导入了系统
名称空间,其中包含系统.对象
。如果Object
只是一个不幸选择的示例名称,请包含一个包含您所看到的确切错误的名称。@Ivana,请参阅本文档中有关命名约定的内容。如果您必须将类更改为更有意义的名称,这将节省您以后大量的重写。这不是实际的命名,我的意思是它是一个对象的通用术语。同一个项目中的两个文件可以正常工作,问题是当我在Monodevelop中导入库时。我猜这可能与构建选项或类似的东西有关。对不起,似乎我没有足够正确地阅读你的帖子。。。我刚刚做了另一个测试,现在有一个库,请看我编辑的答案。