1

我正在为游戏编写代码,并希望将我的 main 方法包含在两个不同的命名空间中,以便它可以轻松地从“引擎”和“核心”命名空间访问所有类。

namespace Engine Core
{
    class ExampleClass
    {
    }
}

虽然我只是在 Engine 和 Core 之间放了一个空格,但我知道这种语法是不正确的,我想知道如何让一个类成为多个命名空间的成员。如果这是不可能的,有什么我可以做的事情会发生同样的事情吗?(这两个命名空间中的类都不必通过“Engine.”或“Core.”来引用此类。

4

2 回答 2

2

一个类不能属于两个不同的命名空间。如果您想在每次引用这些命名空间的类型时引用引擎或核心命名空间的类而不显式编写命名空间,只需using在文件开头使用。using 指令允许在命名空间中使用类型,因此您不必限定在该命名空间中使用类型:

using Engine;

或者

using Core;

检查文档:使用指令

于 2013-08-07T02:41:39.667 回答
0

因此,您希望某人能够ExampleClass使用Engine.ExampleClassand访问Core.ExampleClass?我不确定你为什么会(我相信你有你的理由),但有两种方法可以揭露这样的事情:

namespace Foo
{
    abstract class ExampleClass
    {
         //Only implement the class here
    }
}

namespace Engine
{
    class ExampleClass : Foo.ExampleClass
    {
         //Don't implement anything here (other than constructors to call base constructors)
    }
}

namespace Core
{
    class ExampleClass : Foo.ExampleClass
    {
         //Don't implement anything here (other than constructors to call base constructors)
    }
}

或者您可以使用命名空间别名,但使用该类的每个 cs 文件都需要定义别名。

using Engine = Core;
于 2013-08-07T02:48:26.410 回答