比方說,我有一個Manager類在編譯時限制方法訪問的最佳方式是什麼?
public class Manager {
public Item Create() {
...
return new Item(...);
}
}
,我有一個項目類:
public class Item {
[AllowCallBy(typeof(Manager))]
public Item(...) {
}
...
}
現在,我想用最簡單,最直接的方法,在分析像AllowCallBy
屬性編譯時間並顯示錯誤或警告。如果,在這種特殊情況下,比管理類其他類試圖實例Item
與new Item(...)
我想顯示類似「不直接實例化項目類,調用Manager.Create(...),而不是」。
我想至少有一個系統:Roslyn,ReSharper,PostSharp或者別的什麼都可以讓我做到這一點,或者與我試圖達到的目標非常接近。有人可以舉一個例子說明如何使用它以及如何使用它?
這聽起來像一個代碼味道,我不知道你將如何實現在編譯的時候是這樣的,但你應該重新考慮你的設計。可以在Item類中創建一個靜態方法或一個構造函數,它需要一個類型爲Manager的參數,以確保每個項目都與經理或某事有關......這些行... – Habib
我相信你可以用Roslyn編寫一個分析器,警告你,是的。如果您將嚴重性更改爲錯誤,我認爲它也會阻止構建應用程序。 –
問題是,沒有任何東西可以阻止另一位開發人員不理解您的前提,因爲他只是刪除此警告。我認爲更好的方法是從Item Item中刪除特定的需求,用一個manager參數創建一個Item的構造函數,或者向你的問題添加更多的細節,以更好地描述你正試圖解決的*問題* – Sayse