这是我上一个问题Stop my "Utility" from giving errors between different architectures的后续内容,假设我正在尝试创建一个类似于此的类库:
- Class Utility (Parent class)
... Utility functions and methods
(EG: Public Sub Sub1() )
- Class Utility_Web
... Functions and methods only related to Web / Web-Controls
(EG: Public Sub Web_Sub1() )
- Class Utility_WinForms
... Functions and methods only related to Winforms / WinForm-Controls
(EG: Public Sub WinForm_Sub1() )
现在,我希望能够做的只是添加Utility
dll作为对我的任何项目的引用,并且能够通过简单地访问所有这三个类中的函数和方法输入,例如:
Utility.Sub1
Utility.WebSub1
Utility.WinFormSub1
换句话说,无需输入:
Utility.Utility_Web.Websub1
为了让最终程序员不需要知道这个实用程序的内部结构,他们可以用Utility.
命名法引用它的所有方法/函数。
我该怎么做呢?这是NameSpaces
生效的地方吗? Inheritance
? Partial Classes
? Modules
而不是课程?
答案 0 :(得分:5)
如果要使用相同的类名访问这些方法,似乎没有任何理由将它们放在单独的类中。
如果您想为了组织目的在多个源文件中拆分代码,可以使用partial classes。
答案 1 :(得分:2)
这似乎是一个很好的例子,你想要使用部分类,所有这些都使用相同的Utility命名空间。这将允许您使用Utility.WebSub1访问方法并减少步骤。
答案 2 :(得分:1)
一个名为Utility
的类从一开始就是一个坏类。它的用途是什么?它对你有什么帮助?还有多少人会命名类实用程序?
为您的类命名,将它们关联到名称空间中,使它们具有逻辑和功能意义。
假设您正在创建一组静态方法来帮助使用代表Month
的类。为什么不将方法放入Month
?如果您正在编写将数据从一个表示转换为另一个表示的方法,请按照这种方式命名(即MonthDataTranslation
)。
不要担心输入客户端或客户端代码。 Intellisense和C#using语句减轻了很多,并且在一个命名错误,模糊的Utility类和一个名字很长的类之间做出选择,我会每次都选择后者。