在開發、維護專案,常會有許多半成品功能,你不會想讓別人來使用,因為之後破壞性更新
可能性非常高。
這時候可以使用partial class + 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檔案,分別如以下代碼。
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類別,這樣開發方式緊密、又讓人安心。