簡體   English   中英

C#中密封類的擴展方法

[英]Extension methods for sealed class in c#

我有這個sealed課程,

public sealed class A
{
    public string AName {get;set;}
}

有人可以為它編寫擴展方法,如下所示:

public static class Extensions
{
   public static void ExtensionMethodForA (this A a)
   {
      Console.WriteLine("A's Extension method!");
   }
}

問題是,如何防止這種情況發生?

你不知道 你不能 而且你不應該想要。

實例方法總是比擴展方法更可取,因此它不應該出現沖突。 除此之外,它們僅僅是語法/便利性。 不要試圖給呼叫者帶來不便。

您可能會對術語“擴展方法”感到困惑。 它不是類中方法,甚至不是派生類。 它是對類型操作。 它無權訪問類層次結構的私有成員,受保護成員或內部成員,因此該類仍處於密封狀態。

因此,您可以,也不需要。

沒有意義。 任何用戶仍然可以創建一個靜態類,該類實現了使用您的類類型的方法。

他們只會在聲明中忽略“ this”,調用者必須顯式地傳遞對象,而不是使用更簡單的。 句法。 最終結果將是相同的。

擴展方法只是表達我剛剛描述的更好的方法,無論如何總會有可能。

暫無
暫無

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

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