在部分 class 中声明的变量对第二个部分 class 声明不可见?

Variables declared in partial class not visible to second partial class declaration?

所以我有两个不同的源文件:

file1.cs:

namespace namespace1 {
    public partial class Class1 {
        public partial class NestedClass {

             public int myInt{ get; set; }

        }
    }    
}

file2.cs:

namespace namespace1.Class1 {
    public partial class NestedClass {

         void doSomething() {
             Console.WriteLine(this.myInt); // class does not contain definition for myInt
         }
    } 
}

问题:

我正在尝试访问在第一个部分 class 中声明的成员变量。其他文件看不到我声明的变量。

我的解决方案尝试:

我找到了这个 post,但它似乎没有解决我的问题。我在每个 class 部分文件中声明了几个测试变量,其他文件看不到任何内容。我尝试了 public 和私有变量,有和没有 setters,因为在那种情况下的问题涉及丢失 setter。我想也许我的 classes 命名不正确,所以我三次检查了我的名称空间和 class 名称,发现它们都被声明为部分名称。最后,我也尝试重新启动 Visual Studio,但无济于事。

如有任何帮助,我们将不胜感激!

问题是在您的第一个文件中,您有一个名称空间:

namespace namespace1 {

而第二个是:

namespace namespace1<b>.Class1</b> {

由于 命名空间不同 ,C# 认为 class 也不同 :它们 碰巧具有相同的名称,但由于它们是在不同的命名空间中声明的,C# 认为它们是不同的。

如果你使用部分 nested classes,你应该这样写:

file1.cs:

namespace namespace1 {

<b>    public partial class Class1 {</b>

        public partial class NestedClass {

             public int myInt{ get; set; }

        }
<b>    }</b>
}

file2.cs:

using System;

namespace namespace1 {

<b>    public partial class Class1 {</b>

        public partial class NestedClass {

            void doSomething() {
                Console.WriteLine(this.myInt); // class does not contain definition for myInt
            }

        }

<b>    }</b>
}

所以你没有指定外部class作为命名空间,但是你声明外部class两次。