扩展方法不适用于子类?

发布于 2024-09-24 03:45:27 字数 569 浏览 3 评论 0原文

显然,扩展方法不适用于子类,或者只是我?

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 语句。

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

Apparently, extension methods don't work on subclasses, or is it just me?

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

There is a typo in this question (which I'm leaving so that the rest makes sense) - I forgot to make Child inherit from Parent.

As it happens, my real problem was that I didn't have the appropriate using statement.

(Unfortunately, I can't delete, as too many upvotes on answer.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦断已成空 2024-10-01 03:45:28

这应该可以正常工作(LINQ 扩展构建在 IEnumerable 之上,并且它们可以在 List 等上工作)。问题是在您的示例中 Child 不继承自 Parent

This should work just fine (LINQ extensions are built on top of IEnumerable<T>, and they work on List<T> et al.). The issue is that Child does not inherit from Parent in your example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文