繁体   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