擴充套件方法只能看到擴充套件類的公共(或內部)成員
public class SomeClass
{
public void DoStuff()
{
}
protected void DoMagic()
{
}
}
public static class SomeClassExtensions
{
public static void DoStuffWrapper(this SomeClass someInstance)
{
someInstance.DoStuff(); // ok
}
public static void DoMagicWrapper(this SomeClass someInstance)
{
someInstance.DoMagic(); // compilation error
}
}
擴充套件方法只是一種語法糖,實際上並不是它們擴充套件的類的成員。這意味著它們不能破壞封裝 - 它們只能訪問 public
(或者在同一個程式集中實現時,internal
)欄位,屬性和方法。