C# - 部分 class 中的私有静态方法未在文件之间共享?
C# - private static method in partial class not shared between files?
我正在这样创建 static partial class
。
如果我将它们放在 同一个文件 中 没有 问题,但是当我将一个 class 移动到另一个时同一个项目中的文件,此方法private_method_from_a()
已不存在。
这是设计使然吗?我在这里错过了什么吗?
//File A
public static partial class PartialClass
{
private static void private_method_from_a()
{
//Do something
}
}
//File B
public static partial class PartialClass
{
public static void public_method_b()
{
private_method_from_a();
}
}
这两个文件很可能在不同的 namespace
中,正如@MickyD 在评论中所建议的那样。这个问题的原因是你然后完全制作 2 different 类。很有可能,其中一个在您的项目的命名空间中,而另一个在全局命名空间中——也就是说,您根本没有为它指定一个命名空间。以下是编译器如何看待它们(假设您的项目名为“MyProject”,并且将该名称作为 top-level 命名空间):
partial class global::MyProject.PartialClass
和
partial class global::PartialClass
好吧,这是两种不同的类型,具有 不同的完全限定名称 ,都是部分名称。
确保它们都在同一命名空间中,以便 C# 编译器将它们视为同一类型。
我正在这样创建 static partial class
。
如果我将它们放在 同一个文件 中 没有 问题,但是当我将一个 class 移动到另一个时同一个项目中的文件,此方法private_method_from_a()
已不存在。
这是设计使然吗?我在这里错过了什么吗?
//File A
public static partial class PartialClass
{
private static void private_method_from_a()
{
//Do something
}
}
//File B
public static partial class PartialClass
{
public static void public_method_b()
{
private_method_from_a();
}
}
这两个文件很可能在不同的 namespace
中,正如@MickyD 在评论中所建议的那样。这个问题的原因是你然后完全制作 2 different 类。很有可能,其中一个在您的项目的命名空间中,而另一个在全局命名空间中——也就是说,您根本没有为它指定一个命名空间。以下是编译器如何看待它们(假设您的项目名为“MyProject”,并且将该名称作为 top-level 命名空间):
partial class global::MyProject.PartialClass
和
partial class global::PartialClass
好吧,这是两种不同的类型,具有 不同的完全限定名称 ,都是部分名称。
确保它们都在同一命名空间中,以便 C# 编译器将它们视为同一类型。