创建一个由许多子类组成的类库

时间:2013-01-22 16:24:24

标签: c# .net vb.net oop

这是我上一个问题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生效的地方吗? InheritancePartial ClassesModules而不是课程?

3 个答案:

答案 0 :(得分:5)

如果要使用相同的类名访问这些方法,似乎没有任何理由将它们放在单独的类中。

如果您想为了组织目的在多个源文件中拆分代码,可以使用partial classes

答案 1 :(得分:2)

这似乎是一个很好的例子,你想要使用部分类,所有这些都使用相同的Utility命名空间。这将允许您使用Utility.WebSub1访问方法并减少步骤。

答案 2 :(得分:1)

一个名为Utility的类从一开始就是一个坏类。它的用途是什么?它对你有什么帮助?还有多少人会命名类实用程序?

为您的类命名,将它们关联到名称空间中,使它们具有逻辑和功能意义。

假设您正在创建一组静态方法来帮助使用代表Month的类。为什么不将方法放入Month?如果您正在编写将数据从一个表示转换为另一个表示的方法,请按照这种方式命名(即MonthDataTranslation)。

不要担心输入客户端或客户端代码。 Intellisense和C#using语句减轻了很多,并且在一个命名错误,模糊的Utility类和一个名字很长的类之间做出选择,我会每次都选择后者。