第一個代碼示例:如何從父母和孩子擴展方法具有相同的名稱
public class Parent
{
}
public static class ParentExtension
{
public static void DoSomething<T>(this T element) where T : Parent
{
...
}
}
public class Child : Parent
{
}
public static class ChildExtension
{
public static void DoSomething<T>(this T element) where T : Child
{
...
}
}
//Trying to call child extension class
var child = new Child();
child.DoSomething(); //Actually calls the parent extension method even though it is a child class
那麼,是不是可以做到什麼,我在這裏做什麼? 我認爲最具體的延伸將被拿起,但顯然並非如此。
,爲什麼孩子一偶存在?? –
這可能會爲您澄清:https://blogs.msdn.microsoft.com/ericlippert/2009/12/10/constraints-are-not-part-of-the-signature/ – NWard
[This](http:/ /stackoverflow.com/questions/31788804/how-to-hide-extension-methods-from-derived-classes?rq=1)似乎相關。 –