C# 命名空间和构造函数名称中表单设计器的InitializeComponent出错

C# 命名空间和构造函数名称中表单设计器的InitializeComponent出错,c#,initialization,C#,Initialization,我已经将一些旧的(不是我自己的)代码引入到一个我想要修改的新解决方案中。我是新来C#的,所以如果我的术语不正确或遗漏了任何明显的内容,我深表歉意 我有一个主窗体MainForm.cs和自定义组件CustomComponent.cs,它们继承了PropertyGrid。CustomComponent位于MainForm中 我得到一个错误: The type name 'MainNameSpace' does not exist in the type 'MainNameSpace.MainName

我已经将一些旧的(不是我自己的)代码引入到一个我想要修改的新解决方案中。我是新来C#的,所以如果我的术语不正确或遗漏了任何明显的内容,我深表歉意

我有一个主窗体MainForm.cs和自定义组件CustomComponent.cs,它们继承了PropertyGrid。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
    }

谢谢

我以前也遇到过这个问题,我很确定这与以下几行有关:

namespace MainNameSpace
{
    public partial class MainNameSpace : PropertyGrid
    {
名称空间和类不能具有相同的名称,因为它不知道您正在调用哪个名称。尝试更改名称空间或类名,应该可以


希望这有帮助

这似乎解决了问题。我相信它在原始代码中是有效的,因为组件位于与main名称空间不同的项目/名称空间中,但当我将代码带过来时,我将所有内容都保留在单个项目和名称空间中。谢谢。为了澄清,名称空间名称和类型名称相同没有技术问题。就编译器而言,没有歧义:因为
MainNameSpace
引用该类型,
MainNameSpace.MainNameSpace
引用该类型不存在的成员。如果需要名称空间,可以使用
global::mainnespace
访问它。这仅仅是序列化程序中的一个bug/缺少的特性,假设在C#中,命名空间限定的类型名可以用来引用该类型。
namespace MainNameSpace
{
    public partial class MainNameSpace : PropertyGrid
    {