为什么我不能在另一半的部分类的一半中访问私有静态方法?

时间:2014-12-10 00:06:42

标签: c# partial-classes

必须有一些我想念的简单事物。我有两个不同的程序集中的两个部分类,并且我无法在另一个部分类的一个分部类中引用私有静态方法。

例如,在 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确实知道两者之间存在依赖关系。

1 个答案:

答案 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();
        }
    }
}

也就是说,使用某种形式的构图可能会有更简洁的方法来完成你想要做的事情。细节取决于您的特定应用。