2016-02-05 40 views
0

我在庫中有一個像My.Namespace.MyObject這樣的命名空間的層次結構。我的理解是,如果我將using My.Namespace;包含在源文件的頂部,那麼我應該可以直接使用Object。不幸的是,只有輸入完整的My.Namespace.MyObject,只有Namespace.MyObjectMyObject都不起作用。在試圖研究這一點時,我發現它可能發生在類和名稱空間共享名稱時,但對我而言情況並非如此。谷歌真的很難「用不上班」,所以我一直沒有找到可能相關的其他東西。如何避免在Monodevelop中輸入完整的命名空間層次結構(「使用」不起作用)?

一個完整的例子如下。在一個項目中,我做的:

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; 
    } 
} 
+4

我會避免使用名字'Object',基本上 - 我懷疑問題是,你還導入'System'命名空間,含'System.Object'。如果'Object'只是一個不幸選擇的示例名稱,請包含一個[mcve],其中包含您看到的確切錯誤。 –

+0

@Ivanna,請參考這個[MSDN C#關鍵字](https://msdn.microsoft.com/en-us/library/x53a06bb.aspx)有關命名約定的文檔,這將爲您節省大量的重新編寫在將來如果你需要將你的班級改爲更有意義的名字。 – MethodMan

+2

這不是實際的命名,我的意思是它是一個對象的通用術語。 – Ivanna

回答

0

項目A,彙編成LibraryTest.dll

namespace FirstLevel 
{ 
    namespace SecondLevel 
    { 
     public class LibraryClass 
     { 
      public LibraryClass() 
      { 
      } 

      static void Main() 
      { 
      } 
     } 
    } 
} 

項目B,只是一個控制檯應用程序,使用項目庫:

using FirstLevel.SecondLevel; 

namespace ConsoleTest 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      LibraryClass test = new LibraryClass(); 
     } 
    } 
} 

重要提示:確保您的圖書館添加到References在其他項目中

  • 右鍵單擊References - >Edit References...
  • 開關.NET Assembly
  • 點擊Browse...
  • 選擇庫

參見所附截圖。

enter image description here enter image description here

+0

同一個項目中的兩個文件工作正常,問題是當我在Monodevelop中導入一個庫時。我猜測它可能與構建選項或類似的東西有關。 – Ivanna

+0

對不起,好像我沒有正確閱讀你的文章......我只是做了另一個測試,現在有一個圖書館,看到我編輯的答案。 – d4Rk

相關問題