C# 何时创建泛型类和分部类

C# 何时创建泛型类和分部类,c#,.net,class,C#,.net,Class,假设我有3个类,在这些类中,我有2个公共函数和1个不同的,与成员相同(有些相同,有些不同)。 这些类对象是在foreach循环中创建的,在一次迭代中只创建一个类对象 我正在寻找创建类的更好方法: 可以创建基类,然后驱动子类 可以创建一个主类,其余作为一个内部类 可以创建一个抽象类,rest作为不同的类 可以创建3个分部类 可以创建泛型类 我只是想知道更好的方法,以防我可以创建三个分部类或任何泛型类那么请解释一下 我正在使用C#3.0。可以创建基类,然后驱动子类 很好的候选人。但是,请看3。在下面

假设我有3个类,在这些类中,我有2个公共函数和1个不同的,与成员相同(有些相同,有些不同)。
这些类对象是在
foreach
循环中创建的,在一次迭代中只创建一个类对象

我正在寻找创建类的更好方法:

  • 可以创建基类,然后驱动子类
  • 可以创建一个主类,其余作为一个内部类
  • 可以创建一个抽象类,rest作为不同的类
  • 可以创建3个分部类
  • 可以创建泛型类
  • 我只是想知道更好的方法,以防我可以创建三个分部类或任何泛型类那么请解释一下


    我正在使用C#3.0。可以创建基类,然后驱动子类

    很好的候选人。但是,请看3。在下面如果您有类
    Employee
    Manager
    ,其中
    Manager
    源自
    Employee
    ,则应使用此解决方案<代码>员工不是抽象的

    2。可以创建一个主类,其余作为内部类

    糟糕的候选人。内部类只是一种作用域类的方法。大多数情况下,您应该避免使用公共的内部类,然后内部类就变成了类的一个实现细节

    3。可以创建一个抽象类,其余部分作为不同的类

    很好的候选人。与1相同。除非不能实例化基类。如果您的基类是“不完整的”,并且需要派生才能完全指定,则应选择此解决方案。如果您的类是
    Employee
    salariedeemployee
    ExternalEmployee
    ,其中
    Employee
    是基类,则此解决方案是正确的。除非您知道员工是受薪员工还是外部员工,否则无法正确描述员工

    4。可以创建3个分部类

    糟糕的候选人。分部类是将类的源代码拆分为多个源文件的一种方法

    5。可以创建泛型类


    可能是个糟糕的候选人。泛型类用于创建单个(泛型)类,该类使用不同的类型参数实现相同的行为。您描述您的类具有不同的方法,并且泛型类没有“不同的方法”,具体取决于类型参数。

    部分类-允许您生成一个类,该类在同一程序集中的多个文件中实现。正如slfan所指出的,当类的一部分正在生成,而另一部分是手工编写时,这是非常有用的

    泛型类-允许您生成一个类,该类具有一个以特定方式工作的实现,但不关心它在什么上工作。列表就是一个很好的例子。列表并不关心列表中的实际内容,但它知道如何获取第一个元素或删除第三个元素


    抽象类-允许您生成单个抽象类的多个子类。抽象类依赖于子类来实现某些方法。这与泛型类不同,因为抽象类知道某些事情需要发生,但它不知道这些事情实际上是什么,子类知道。

    泛型类和分部类是两个完全不同的东西……您应该仅将分部类与代码生成器结合使用。一部分是由某个工具生成的,另一部分是您自己编写的。@slfan:我不认为这是分部类的唯一目的…@BoltClock:当然您可以用不同的方法来使用它,但我想不出任何好的理由。如果你必须把你的类分成两半,它可能设计得很糟糕。听起来你想要一个抽象基类,然后是三个继承它的类,每个类都有自己的一组新属性和方法。我看不出部分类有什么真正的需要。我将继续使用抽象类,并将需要在子类中实现的函数作为抽象类。