1

ゲームのコードを書いていますが、'エンジン' と 'コア' の両方の名前空間からすべてのクラスに簡単にアクセスできるように、メイン メソッドを 2 つの異なる名前空間に含めたいと考えていました。

namespace Engine Core
{
    class ExampleClass
    {
    }
}

Engine と Core の間にスペースを入れただけですが、この構文が正しくないことはわかっています。クラスを複数の名前空間のメンバーにする方法を知りたいです。これが不可能な場合、同じように振る舞うために私にできることはありますか? (これら 2 つの名前空間のいずれにも属さないクラスは、'Engine.' または 'Core.' によってこのクラスを参照する必要はありません。

4

2 に答える 2

2

クラスが 2 つの異なる名前空間に属することはできません。これらの名前空間のタイプを参照するたびに名前空間を明示的に記述せずに、エンジンまたはコアの名前空間のクラスを参照する場合usingは、ファイルの先頭で使用するだけです。using ディレクティブを使用すると、名前空間での型の使用が許可されるため、その名前空間での型の使用を修飾する必要はありません。

using Engine;

また

using Core;

ドキュメントを確認してください: using Directive

于 2013-08-07T02:41:39.667 に答える
0

それで、誰かがandExampleClassを使ってアクセスできるようにしたいですか? なぜそうするのかはわかりませんが(理由があると確信しています)、このようなものを公開する2つの方法は次のとおりです。Engine.ExampleClassCore.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 に答える