当前位置:  开发笔记 > 编程语言 > 正文

C#扩展方法架构问题

如何解决《C#扩展方法架构问题》经验,为你挑选了1个好方法。

我最近问过这个问题: 引用自定义C#扩展方法的编译器错误

Marc Gravell的回答很完美,它解决了我的问题.但它让我有所思考......

如果和Extension方法必须放在静态类上,并且方法本身必须是静态的,为什么我们不能创建静态的扩展方法?

我知道标记为"this"的参数将用于允许访问我们正在扩展的对象的实例.我不明白为什么不能创建一个静态的方法......在我看来,这是一个无意义的限制......

我的问题是:为什么我们不能创建一个可以作为静态方法使用的扩展方法?



1> Marc Gravell..:

我希望真正的答案很简单:没有一个好的用例.例如,优点是它可以在现有类型(本身不提供逻辑)上启用流畅的API - 即

var foo = data.Where(x=>x.IsActive).OrderBy(x=>x.Price).First();

这使LINQ:

var foo = (from x in data
           where x.IsActive
           order by x.Price
           select x).First();

使用静态方法,这根本不是问题,所以没有理由; 只需在第二种类型上使用静态方法.

实际上,扩展方法不适合面向对象 - 它们是一种实用的滥用方式,以牺牲纯度为代价使生活更轻松.没有理由以同样的方式稀释静态方法.


静态扩展方法可以使我们摆脱所有那些用静态方法填充的"Helper"类.请参阅反馈,了解用例.
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有