Методы расширения не работают на подклассах? - PullRequest
3 голосов
/ 21 сентября 2010

Видимо, методы расширения не работают на подклассах, или это только у меня?

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

UPDATE

В этом вопросе есть опечатка (которую я оставляю, чтобы остальное имело смысл) - я забыл сделать Child наследованным от Parent.

Как оказалось, моя настоящая проблема заключалась в том, что у меня не было соответствующего using заявления.

(К сожалению, я не могу удалить, так как слишком много голосов против).

1 Ответ

7 голосов
/ 21 сентября 2010

Это должно работать просто отлично (расширения LINQ построены поверх IEnumerable<T>, и они работают на List<T> и др.).Проблема в том, что Child не наследуется от Parent в вашем примере.

...