我已經將一些舊的(不是我自己的)代碼引入到我想要修改的新解決方案中。我是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
}
}
謝謝!
似乎已經解決了這個問題。我相信它在原始代碼中起作用,因爲該組件與MainNameSpace位於不同的項目/名稱空間中,但是當我將代碼帶入時,我將所有內容都保存在單個項目和名稱空間中。謝謝。 – user1424311
爲了澄清,命名空間名稱和類型名稱是相同的沒有技術問題。就編譯器而言,沒有歧義:因爲'MainNameSpace'指的是類型,'MainNameSpace.MainNameSpace'指的是一個不存在的類型成員。如果你想要命名空間,你可以用'global :: MainNameSpace'來訪問它。這只是在串行器中的一個缺陷/缺失功能,假定在C#中,可以使用限定名稱空間的類型名稱來引用該類型。 – hvd