[英]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.