簡體   English   中英

為什么不能在部分類的另一半中訪問私有靜態方法?

[英]Why can't I access a private static method in one half of a partial class from the other half?

我一定缺少一些簡單的東西。 我在兩個不同的程序集中有兩個部分類,並且我不能從另一個部分類中引用一個部分類中的私有靜態方法。

例如,在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確實知道兩者之間存在依賴關系。

您不能在兩個程序集之間拆分局部類。 它們實際上被編譯為兩個不同的類。

如果您真的想在程序集之間通過共享“私有”成員來完成類似的工作,則可以通過創建基類並繼承它來獲得類似的結果:

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

也就是說,可能存在一種更清潔的方式來使用某種形式的組合來完成您要嘗試的工作; 詳細信息取決於您的特定應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM