C#基础—不完整类型(局部类型)
1.为何要引入Partial Type
通常,我们在一个.cs文件中维护一个类,这也是一种一般约定,也算一个良好的编程风格,但是有些时候,这个类或类型非常庞大,这对可读性、维护性来说成了一种约定的限制。
当我们接触过一些 ORM 框架的自动生成代码映射的功能时,会发现,当我们使用工具生成了一些基本机构的代码时,很多类都是 partial 类,这是因为当我们在自动代码生成的基础上修改一些自定义的东西后,当再次auto-code时,自定义的代码就被覆盖了,当然我们通常也可以在框架提供的模板中做一些自定义的模板以实现我们的要求,但是如果自己维护的话有时会更加方便。
除了以上2种场景,还有一些情况下,当我们团队开发需要较明确的分工时,一个类可能由2个以上的人员来完成,这时候写局部类也是一个很好的选择。
2. Partial Type 的定义和应遵循的约定
不完整类型(Partial Type) : 可以让类、结构、接口分为多个不同的部分存储在不同的源文件中。(不支持委托、枚举)
不完整类型使用约定:
(1)、不完整类型的所有部分必须同时在同一命名空间下编译,在编译时各个部分被融合到一起。
(2)、不完整类型的所有部分的修饰符必须保持一致性,不能相互矛盾。
(3)、不完整类型的各个部分实现的接口、Attribute 具有累加效应。
1 public partial class Program 2 { 3 public void BaseFunc() 4 { 5 Console.WriteLine("工具生成的基本结构方法"); 6 } 7 8 static void Main(string[] args) 9 { 11 //编译时,和一个类2个方法的效果是一样的 13 Console.Read(); 14 } 15 } 16 17 public partial class ProgramPartial 18 { 19 public void ExtendFunc() 20 { 21 Console.WriteLine("写一些自定义的方法"); 22 } 23 }
幸福是奋斗出来的