扩展方法命名空间和赞助者类的命名约定

Mil*_*ian 15 extension-methods naming-conventions .net-3.5

您对名称空间和赞助商类使用了哪些命名约定?(即包含扩展方法定义的类)

是否有标准/推荐的.NET Framework命名约定?("框架设计指南,第2版"一书仅提供了关于不使用的命名空间的指导).

jru*_*ell 13

我没有看到任何官方建议,但我一直在组织我的扩展类,如[NameSpace].[ClassName]扩展:

ProjectName.Web.Util.ControlExtensions
ProjectName.Data.Util.CollectionExtensions
Run Code Online (Sandbox Code Playgroud)

  • 我也这样做,我还要补充说,我倾向于将任何高度专业化的静态扩展方法类放入相关的命名空间中,以便它们可以被使用,这样它们就不会为其他开发人员提供智能感知.换句话说,我的扩展方法类不一定与它们扩展的类在同一名称空间中. (3认同)
  • 我做了类似的事情,但是当我将扩展方法添加到 *interface* 而不是类时,我最终得到了丑陋的类名,如“IMyInterfaceExtensions”,并且看起来扩展类本身就是一个接口:( (2认同)

Ree*_*sey 7

对于命名空间 - 我将重点关注命名空间名称的标准框架准则.将扩展方法放入命名空间中,通常会有意义地使用/关联它们,并避免为此添加额外的命名空间.

对于赞助商类 - 在这种情况下,它是相当不重要的.我会尝试选择一个有意义的类名,但似乎没有固定的指导方针.

但重要的是,赞助商类永远不会被扩展方法的用户直接使用/看到.只要包含名称空间,就可以正确找到扩展方法.我个人使用与jrummell非常类似的东西来扩展我的扩展方法,但是微软并没有在框架中使用它(一个很好的例子就是Enumerable类).