为什么我们需要.NET中的部分类

时间:2015-07-07 05:46:20

标签: c# .net

在.Net中编译应用程序时,它会将所有部分类分组并将它们视为单个对象。

public partial class DemoClass
{
        public void Hello()
        {
        }
}

public partial class DemoClass
{
        public void Bye()
        {
        }
} 

在Partial Class背后的代码中总是有

 public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }

那为什么我们在.NET中有部分类?

6 个答案:

答案 0 :(得分:3)

部分类提供了跨文件拆分类代码的方法。

这样一个文件可以包含生成的代码,另一个文件可以包含手写代码。生成的代码可以在不弄乱手写代码的情况下重新生成。如果自定义代码已添加到与生成的代码相同的文件中,则重新生成将覆盖它。

Visual Studio本身在设计人员生成代码和用户添加逻辑的许多地方使用它。有时,Visual Studio通过仅在编译期间生成代码来隐藏生成的代码(编译WPF应用程序在Xaml和'代码隐藏'之间生成'桥'类),有时生成的代码放在部分类中,而不提供空的双胞胎类,留给开发者。

通常:生成代码时,使用部分类作为使用生成器的开发人员的服务。在我们处理它时:考虑提供部分方法以允许开发人员连接到生成的代码的逻辑,以便开发人员可以在实现部分方法之间自由选择,为正确的原因对生成的类进行子类化。

答案 1 :(得分:2)

部分用于跨多个文件拆分代码。有部分课程的原因有三个:

  • 在创建设计器时需要分离,应避免混淆用户和设计器代码。例如:Windows窗体类
  • 对于拆分大型班级,无论如何都应该避免这种情况
  • 对于嵌套类型(这是我个人经常做的事情)

答案 2 :(得分:1)

当使用t4模板(如带有EntityFramework的模型和.edmx)生成某些类时,部分类很有用。

因此,您可以使用另一个分组扩展模型,而不会受到自动生成的困扰。

When is it appropriate to use C# partial classes?

答案 3 :(得分:1)

当您生成代码时,会使用Partial,代码很容易发生变化,但其真正的来源是例如.edmx文件。因此,每次更改.edmx文件时,都会重新生成代码。这意味着您在该文件中所做的每个更改都会丢失。现在,您想扩展该代码,您做什么?要么从要扩展的类继承,要么使用partial。请记住,当你继承了更多的东西时。当你使用partial时,它只会成为同一个类的一部分。

此外,有时您无法继承,因为基类是密封的,并且您也可能遇到编写错误的Reflection代码的问题。

答案 4 :(得分:1)

程序员使用这些部分类的方法很多,例如:

  • 将一个类划分为许多较小的文件(如果文件太大而你的鼠标滚动不好)
  • 允许扩展基类
  • 某些机器生成的代码被标记为部分代码,因此您可以添加自己的逻辑而无需查看生成的代码。

我认为所有这些原因都很糟糕。我尽量避免部分课程。事实上,我用sealed标记了我的大部分课程。我相信如果我们不使用部分类

,代码将更容易阅读

答案 5 :(得分:1)

有时在不同的库中,您可以看到标准业务逻辑的实现,但是可以使用部分类进行扩展。

例如,在EntityFramework中,您可以使用数据库第一种方法生成数据库模型,然后您将拥有模型类 - 部分类。他们使用部分类将生成的代码与您自己的扩展代码分开。

这是一篇内容丰富的文章,介绍了它在C#和asp.net中的用途 http://www.codeproject.com/Articles/313352/real-time-use-of-Partial-classes-and-partial-met