在开发、维护专案,常会有许多半成品功能,你不会想让别人来使用,因为之后破坏性更新
可能性非常高。
这时候可以使用partial class + private内部类别
来避免此情况。
首先介绍private内部类别
请看以下例子,可以发现 缓存类别,Model类别 ,其他使用者是无法直接使用
,只能单纯使用主要功能类别的API接口,这样日后想要在内部类别修改,删除属性,不用怕影响到其它程式,导致改A坏B情况。
public static class 主要功能类别 { public static string API接口() { return new 缓存类别().API接口(); }pirvate class 缓存类别{ public string API接口() { var model = new Model类别(); return SomeFunction(model); } private void SomeFunction(Model类别 model){ //Your Logic }} pirvate class Model类别{public string MyProperty { get; set; } } }
partial class引进,解决cs档案肥大、可读性差问题
有经验的读者一定有这样经验,前面例子会有一个严重缺点:随着专案的增长,主要功能类别会变成一个庞大的怪物
,要避免此问题可以使用partial class
。
举例:
我们可以把上面三个类别拆成三个cs档案,分别如以下代码。
public static partial class 主要功能类别 { public static string API接口() { return 缓存类别.API接口(); } }
public static partial class 主要功能类别 {pirvate class 缓存类别{ public static string API接口() { return SomeFunction(); } } }
public static partial class 主要功能类别 {pirvate class Model类别{public string MyProperty { get; set; } } }
系统在编译后会帮助将三个partial类别内容组合成一个,如下面两张图片
结语
个人认为这是很重要的小技巧
,因为看过满多人为了方便动不动就宣告为public,其实此举会为之后埋下坑...
要记得专案修改受限程度与开放程度成正比,如同图片:
像是我们常用的LINQ专案中,也是使用此方法做为开发的方式,如同图片
日后随着类别功能完善,可以视情况慢慢地增加可见度,甚至移出partital类别,这样开发方式紧密、又让人安心。