部分类优于继承的优点是什么?

时间:2014-08-24 02:33:10

标签: c# wsdl partial partial-classes generated-code

C#具有部分类的概念。我见过的一个实例是WSDL s。 Visual Studio可以联系服务器以查找服务,并根据它自动生成部分类。然后Visual Studio将为您提供一个空白的部分类来匹配它,以便您可以添加自己的代码。

我觉得这种做法相当令人困惑。部分类优于继承是否有任何优势?

4 个答案:

答案 0 :(得分:6)

部分类用于解决特定问题 - 解决分离生成和手工编程代码的问题。如果没有部分类,程序员就需要避免修改生成的类,或者rely on a design pattern来实现分离。

一个非常重要的一点是部分类的生成部分具有实现。这使它们与不包含实现的接口区分开来。

从某种意义上说,这使得它们类似于抽象类,而不会使它们变得抽象。您可以在不对其进行子类化的情况下扩展和更改功能。

答案 1 :(得分:1)

部分班级:
您可以在同一项目中的多个文件中定义一个类。您最终可能会创建一个包含方法的文件,另一个文件包含属性,等等。在编译时,它与创建一个包含所有内容的大文件相同。

Read more about partial class and method

<强>继承:
您可以在同一项目或另一个项目中扩展现有类的功能。通过继承,您可以在新类上扩展现有类的功能,特性等。

答案 2 :(得分:0)

同意的部分类更多的是关于在多个源文件中拆分类定义而不是继承。

在我看来,它们的主要原因是框架可以为您生成样板代码,您也可以添加方法,而不会被Visual Studio为数据访问或Web服务生成所创建的内容所覆盖

对我而言,微软总是显得头脑迟钝和懒散。

答案 3 :(得分:0)

这是邀请开发人员在部分类的第二个声明中根据需要实现方法 您可以通过压缩大型类来更好地维护应用程序。假设您有一个具有多个接口的类,因此您可以根据接口实现创建多个源文件。易于理解和维护源文件具有部分类的接口。我们来看看以下代码段。

  public interface IRegister
  {
//Register related function
  }

  public interface ILogin
  {
//Login related function
  }

  //UserRegister.cs file
 public partial classUser : IRegister, ILogin
  {
//implements IRegister interface
  } 

 //UserLogin.cs file
 public partial classUser
 {
//implements ILogin interface
 }