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
你没有.你不能.你不应该这样做.
实例方法始终优先于扩展方法,因此不应出现冲突.除此之外,它们仅仅是语法/便利.不要试图让来电者生活不便.
您可能会对术语"扩展方法"感到困惑.它不是类中的方法,甚至不是派生类; 这是一种类型的操作.它无法访问类层次结构的私有,受保护或内部成员,因此该类仍然是密封的.
所以,你不能也不需要.