2013-08-07 18 views
1

我寫代碼的遊戲,並希望包括我在兩個不同的命名空間的主要方法,以便它可以很容易地從兩個「引擎」和「核心」命名空間訪問的所有類。使用多個命名空間來描述一類

namespace Engine Core 
{ 
    class ExampleClass 
    { 
    } 
} 

雖然我只是把引擎和核心之間的空間,我知道這個語法不正確,我想知道如何使一個類多個命名空間中的一員。如果這是不可能的,有什麼我可以做的,會採取相同的行爲? (在沒有這兩個名字空間類具有指代這一類「發動機」或「核心」。

+0

這是沒有意義的。您可以通過使用*部分*關鍵字分割你的類的定義(我知道這不是你以後在做什麼),但如何將具有多個命名空間的工作類成員?無論如何,你可以使ExampleClass不被密封,並從另一個名稱空間中擴展它。像'public class ExampleClass:Engine.ExampleClass' – KappaG3

回答

2

類不能屬於兩個不同的命名空間。 如果你想引用一類發動機或核心名稱空間而無需每次都明確地寫在命名空間中引用類型的命名空間,只需使用using在文件的開頭。using指令允許在命名空間中使用的類型,這樣你就不必限定使用的類型在該名稱空間:

using Engine; 

using Core; 

檢查文檔:using Directive

0

所以,你希望有人能夠通過使用Engine.ExampleClassCore.ExampleClass訪問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; 
相關問題