2012-09-11 31 views
0

我已經將一些舊的(不是我自己的)代碼引入到我想要修改的新解決方案中。我是C#的新手,所以我很抱歉如果我的術語不正確或錯過了任何明顯的東西。從名稱空間和構造函數名稱的窗體設計器的InitializeComponent中的錯誤

我有一個主窗體MainForm.cs和繼承PropertyGrid的自定義組件CustomComponent.cs。 CustomComponent位於MainForm內。

我得到一個錯誤:

The type name 'MainNameSpace' does not exist in the type 'MainNameSpace.MainNameSpace' 

在MainForm.Designer.cs我已經生成的代碼:

/// <summary> 
/// Required method for Designer support - do not modify 
/// the contents of this method with the code editor. 
/// </summary> 
private void InitializeComponent() 
    { 
     // stuff 
     this.customComponent1 = new MainNameSpace.MainNameSpace(); 
     // more stuff 
    } 

如果我手動去和改變它只是「新MainNameSpace( );」它工作得很好。我不知道爲什麼名稱空間的名稱被添加了兩次。我嘗試檢查.resx文件中是否有任何可疑內容,但沒有看到任何內容,並非我知道要尋找什麼內容。有沒有一個好的起點去尋找?我已經進入了MainForm,CustomComponent和其他所有可以考慮尋找罪魁禍首的東西,但沒有發現任何看起來像罪魁禍首的東西。任何想法,我應該在哪裏尋找/尋找什麼?我覺得這個問題在CustomComponent.cs中,但我不知道。

CustomComponent.cs:

namespace MainNameSpace 
{ 
    public partial class MainNameSpace : PropertyGrid 
    { 
     public MainNameSpace() 
     { 
      InitializeComponent(); 
     } 

     // other stuff 
    } 
} 

謝謝!

回答

1

我已經收到這個問題,我敢肯定,這是與這些行:

namespace MainNameSpace 
{ 
    public partial class MainNameSpace : PropertyGrid 
    { 

命名空間和類不能具有相同的名稱,因爲它不知道你正在調用哪一個。嘗試更改命名空間或類名稱,它應該工作。

希望這會有所幫助!

+0

似乎已經解決了這個問題。我相信它在原始代碼中起作用,因爲該組件與MainNameSpace位於不同的項目/名稱空間中,但是當我將代碼帶入時,我將所有內容都保存在單個項目和名稱空間中。謝謝。 – user1424311

+1

爲了澄清,命名空間名稱和類型名稱是相同的沒有技術問題。就編譯器而言,沒有歧義:因爲'MainNameSpace'指的是類型,'MainNameSpace.MainNameSpace'指的是一個不存在的類型成員。如果你想要命名空間,你可以用'global :: MainNameSpace'來訪問它。這只是在串行器中的一個缺陷/缺失功能,假定在C#中,可以使用限定名稱空間的類型名稱來引用該類型。 – hvd

相關問題