文章目錄
將 method 或是 class 標記為 internal 來限定專案使用
一般專案常常會有部份操作是的前後台行為相同或是極度類似的,如果這些行為雷同的程式分別置於前後台會讓程式碼顯得多餘,但把邏輯統一抽出共用又擔心成員在沒有充份了解 method 功能的情況下而誤用造成資安風險
今天就來紀錄一下我的做法
將共用行為抽至 class library
method
//共用的 class public class SharedClass { //共用 method public int MethodA() { return 0; } //僅開放給特定專案 method internal int MethodB() { return 9999; } }
class
//僅開放給特定專案案 internal class LimitClass { internal int MethodC() { SharedClass _class=new SharedClass(); return _class.MethodA() + 123; } }
將 class library 設定開放給指定專案
開啟專案
Properties
下的AssemblyInfo.cs
加入
InternalsVisibleTo
設定給指定專案語法
[assembly: InternalsVisibleTo("{組件名稱}")]
取得組件名稱方法
專案上按右鍵 –> Properties
Application –> Assembly name
實例
[assembly: InternalsVisibleTo("TestMethodRightB")]
實際使用
SharedClass _class = new SharedClass();
Console.WriteLine(_class.MethodA());
Console.WriteLine(_class.MethodB());
LimitClass _limitClass = new LimitClass();
Console.WriteLine(_limitClass.MethodC());
未設定的專案無法使用 internal object
已設定專案正常使用
心得
使用存取子來限制特定專案存取是個簡單的做法,只是強制性並不算高,當然這邊的強制性指的不是 C# 語法,而是團隊成員的素質,如果成員看到有個 class 或是 method 他想用,什麼都沒問就不管三七二十一直接改成 public,我想怎樣都白搭
所以對於團隊成員,尤其是新加入的成員,最有效的還是採用 code review,不過還是得看團隊接受度
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。