组织c#项目助手或实用程序类

时间:2010-07-29 19:06:53

标签: c# .net helper helpermethods

在.NET项目中应该有哪些辅助类的最佳实践是什么?引用与业务层事物分开的类,但是appSetting配置管理器和其他有时特定于模块或有时在整个应用程序中使用的代码的演示和应用程序。

6 个答案:

答案 0 :(得分:19)

我总是允许这样的事情变得非常流畅。那说:

  1. 我测试“helper”类和其他类一样。这使得它们往往不是静态的。
  2. 我可以在需要时将这些助手创建为单独的方法。当我发现他们需要多个班级时,我会将他们移到他们自己的班级或同一个项目中的“公用事业”班级。
  3. 如果我发现在多个项目中需要它们,那么我将它们移到“层次结构”中:从项目到解决方案,从解决方案到子系统,从子系统到应用程序,从应用程序到库或框架等等

答案 1 :(得分:2)

我的解决方案中几乎总是有一个MyProject.Core类库,我把它放在那里。

编辑:我可能已经回答了一个“更大”的问题。

在一个项目中,这一切都取决于项目的规模。 Microsoft设计指南谈到,如果你有少于五个(如果我对这个数字有误的话),那么你不应该创建命名空间。

答案 2 :(得分:2)

我倾向于组合Randolpho和Ben所做的事情:我在Utilities命名空间的“Utilities”文件夹中使用静态助手类。更好的文件组织,保持应用程序命名空间的其余部分清晰。

答案 3 :(得分:1)

我们大多数人只是将它们放在“助手”文件夹中。

根据帮助程序的不同,您可能希望将方法标记为虚拟,以便在必要时进行模拟。那或者绑定到它实现的接口,但是如果你每个接口只有一个具体的它可能是矫枉过正的。

除非辅助方法是纯粹的计算而没有外部依赖,否则它们在任何情况下都不应该是静态的。

即便如此,重新考虑。

答案 4 :(得分:1)

我倾向于将它们放在utils命名空间中。在主项目命名空间中,如果它们非常通用,例如MyProject.Utils.MyHelperClass,或者如果它们更具体,则为子命名空间MyProject.CRM.Utils.MyCRMHelperClass

答案 5 :(得分:1)

我们将这些类放在一个名为Common的程序集中,例如,除了帮助程序需要使用某些商务对象或核心对象的情况外,所有需要它的项目都会引用它们。