最佳实践:C#扩展方法命名空间和提升扩展方法

Jur*_*uri 40 c# extension-methods

我知道已经存在一个帖子,描述几乎相同,但我认为我的有点不同.

我想知道的是如何在分配命名空间方面组织扩展方法.目前 - 对于我们框架中的扩展方法 - 我使用以下命名空间模式

  • MyCompany.Web.Utils

在里面我有扩展方法类.这对我来说很好,但缺点是我们的软件开发人员无法立即看到扩展器.考虑我有一个StringExtender类的情况,它提供了一个非常方便的扩展方法"In",它扩展了String对象.使用带有上述命名空间的扩展方法,我们的程序员除非明确包含其命名空间,否则不会看到扩展方法.相反,如果我将扩展方法放在System命名空间中,每个人都会立即看到它,但我读到这是不好的做法.

所以我的问题是你如何推广你的开发人员使用的扩展方法.

JP *_*oto 38

我们将它们全部放在自己的命名空间中Company.Common.Extensions.这样,如果你有我们的任何扩展方法,你就拥有它们.另外,至少在我的商店,我们不必担心我们的开发人员不了解扩展方法.我有相反的担心,扩展方法超载!:)

  • (+1)我同意,我们使用一个命名公约,我们在最后添加.extensions. (2认同)
  • +1。关于扩展方法重载的要点。 (2认同)

Win*_*ith 9

这里的问题不是命名空间的命名,而是缺乏开发人员的文档和教育.

将它们放入任何有意义的命名空间中,写一篇记录所有扩展方法的wiki文章,然后通过指向wiki文章的链接向开发人员发送电子邮件.

  • 我感觉到你的痛苦.有时我觉得最好继续做这些事情,让人们使用它们,然后告诉管理层:) (3认同)
  • 我不再在这个项目上工作,也无法访问代码库或wiki.请你停止发给我这些电子邮件吗? (3认同)

Shu*_*oUk 5

这不是名称空间问题,而是通信问题.

如果这些方法很有用,您需要将其传达给开发人员,并相反地根据他们的反馈行事(具有适当的判断水平).

将任何内容放入System命名空间是一个灾难和混乱的方法.您唯一想要这样做的是将"后端"功能转换为旧框架,然后您可能不应该自己动手,但应该使用像LinqBridge这样的功能.

警惕将所有扩展都放入一个命名空间的愿望,除非它们真的在一起广泛使用.一些开发商可能会发现,如果他们被所有东西和厨房水槽通过智能感应轰炸,木材就会丢失.

将命名空间保留为公司名称通常是明智的,以避免混淆.