c#中密封类的扩展方法

now*_*ed. 4 .net c# extension-methods

我有这个sealed班,

public sealed class A
{
    public string AName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

有人可以这样写一个扩展方法:

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

问题是,你如何防止这种情况?

Mar*_*ell 13

你没有.你不能.你不应该这样做.

实例方法始终优先于扩展方法,因此不应出现冲突.除此之外,它们仅仅是语法/便利.不要试图让来电者生活不便.

  • +1.@nowhewhomustnotbenamed. - 你的担忧听起来像"如果有人真正使用我的图书馆会怎么样"......或者我错过了什么? (6认同)

Tom*_*get 6

您可能会对术语"扩展方法"感到困惑.它不是类中方法,甚至不是派生类; 这是一种类型操作.它无法访问类层次结构的私有,受保护或内部成员,因此该类仍然是密封的.

所以,你不能也不需要.