扩展方法不适用于子类?

时间:2010-09-21 09:57:10

标签: c# .net extension-methods

显然,扩展方法不适用于子类,还是仅仅是我?

private class Parent
{        
}

private class Child
{
}

public static class Extensions
{
    public static void Method(this Parent parent)
    {
    }
}

//Test code
var p = new Parent();
p.Method();            // <--- compiler like
var c = new Child();
c.Method();            // <--- compiler no like

更新

这个问题中有一个拼写错误(我要离开以便其余部分有意义) - 我忘了让Child继承Parent

碰巧,我真正的问题是我没有适当的using声明。

(不幸的是,我无法删除,因为答案太多了。)

1 个答案:

答案 0 :(得分:7)

这应该可以正常工作(LINQ扩展构建在IEnumerable<T>之上,它们适用于List<T>等。)。问题是Child在您的示例中不会从Parent继承。