必须有一些我想念的简单事物。我有两个不同的程序集中的两个部分类,并且我无法在另一个部分类的一个分部类中引用私有静态方法。
例如,在 FirstHalf 程序集中,我有以下类:
namespace FirstHalf
{
public partial class TestPartialClass
{
private static void PrintFoo()
{
Console.WriteLine("Foo");
}
}
}
然后,在 SecondHalf 程序集中,我有以下类:
namespace FirstHalf
{
public partial class TestPartialClass
{
public static void Main(string[] args)
{
Console.WriteLine(PrintFoo());
}
}
}
但是,当我尝试从SecondHalf程序集调用PrintFoo()
时,出现以下错误:
CS0103: The name 'PrintFoo' does not exist in the current context.
这是怎么回事?我有从SecondHalf到FirstHalf的引用,因此Visual Studio确实知道两者之间存在依赖关系。
答案 0 :(得分:1)
您无法在两个程序集之间拆分分部类;它们实际上被编译为两个不同的类。
如果你真的想在程序集中完成这样的事情,通过共享“私有”成员,你可以通过创建基类并继承它来获得类似的东西:
namespace FirstHalf
{
public class Base
{
protected static void PrintFoo()
{
Console.WriteLine("Foo");
}
}
}
namespace SecondHalf
{
public class Derived : FirstHalf.Base
{
public static void Main(string[] args)
{
PrintFoo();
}
}
}
也就是说,使用某种形式的构图可能会有更简洁的方法来完成你想要做的事情。细节取决于您的特定应用。