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