C# 中Partial的用法
C# 中Partial的用法
在学习中又开始接触新的小知识了,记录一下,方便以后复习。
Partial
C#2.0可以将类,结构或接口的定义拆分到两个或多个源文件中,在类声明前添加Parrtial关键字即可
例:
//源class
public class ToDo { public string name { get; set; } public string password { get; set; } public bool judge(string Name, string Password) { if (Name == name && password == Password) { return true; } return false; } }
//用partial后拆分为一下 public partial class TODO { public string name { get; set; } public string password { get; set; } }
public partial class TODO { public bool judge(string Name, string Password) { if (Name == name && password == Password) { return true; } return false; } }
//由于拥有Parial指定后,不管分为几个类,class指针始终指向TODO,所以可以调用其中的所有属性,哈哈哈,挺好玩的
使用Partial需要注意以下一些情况
1、使用partial 关键字表明可在命名空间内定义该类、结构或接口的其他部分
2、所有部分都必须使用partial 关键字
3、各个部分必须具有相同的可访问性,如public、private 等
4、如果将任意部分声明为抽象的,则整个类型都被视为抽象的
5、如果将任意部分声明为密封的,则整个类型都被视为密封的
6、如果任意部分声明继承基类时,则整个类型都将继承该类
7、各个部分可以指定不同的基接口,最终类型将实现所有分部声明所列出的全部接口
8、在某一分部定义中声明的任何类、结构或接口成员可供所有其他部分使用
应用场景
可以使用partial class的场景很多。这里分析一个ORM的例子。系统中有一个Cat类,属性ID、Age、Weight都需要存储到数据库中,一个信息系统中常见的需求。通过读取数据库的结构,可以用工具生成Cat类的代码。并且ORM框架支持了从数据库信息生成Cat对象。
现在的Cat什么动作都没有,客户说,我们需要一个Miaow()的函数。这时就需要对ORM生成的Cat类进行扩展了。可以肯定地一点是,我们不能修改自动生成的代码,因为这会牵涉到数据库结构与代码同步的问题。解决这个需求有两种方法:继承方式扩展,partial class扩展。
优缺点
Partial的优缺点其实都挺明显:
优点:
提高了程序员开发时对程序编辑的灵活性,只需要维护自己的项目模块就好
缺点:
降低了程序逻辑的可读性,增加了维护的难度