在.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中有部分类?
答案 0 :(得分:3)
部分类提供了跨文件拆分类代码的方法。
这样一个文件可以包含生成的代码,另一个文件可以包含手写代码。生成的代码可以在不弄乱手写代码的情况下重新生成。如果自定义代码已添加到与生成的代码相同的文件中,则重新生成将覆盖它。
Visual Studio本身在设计人员生成代码和用户添加逻辑的许多地方使用它。有时,Visual Studio通过仅在编译期间生成代码来隐藏生成的代码(编译WPF应用程序在Xaml和'代码隐藏'之间生成'桥'类),有时生成的代码放在部分类中,而不提供空的双胞胎类,留给开发者。
通常:生成代码时,使用部分类作为使用生成器的开发人员的服务。在我们处理它时:考虑提供部分方法以允许开发人员连接到生成的代码的逻辑,以便开发人员可以在实现部分方法之间自由选择,为正确的原因对生成的类进行子类化。
答案 1 :(得分:2)
部分用于跨多个文件拆分代码。有部分课程的原因有三个:
答案 2 :(得分:1)
当使用t4模板(如带有EntityFramework的模型和.edmx)生成某些类时,部分类很有用。
因此,您可以使用另一个分组扩展模型,而不会受到自动生成的困扰。
答案 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