在ASP.Net Web窗體中,我遇到過創建與訂單相關的代碼的情況。作爲一種明顯的代碼味道,我正在尋找解決方案來解決這個問題。如何從我的代碼中消除這些順序依賴關係
的僞代碼示例將是:
長途區號:: Page.aspx
protected void Page_Load(...) {
var control = LoadControl("ControlX.ascx");
// Ugly since the control's constructor is not used by LoadControl
control.SetDependencies(...);
}
控制代碼:: ControlX.ascx
public void SetDependencies(...) {
}
protected void Page_Load(...) {
if (dependencies are null)
throw Exception();
else
ContinueProcessing();
}
LoadControl
具有兩個簽名,one used above接受控件c的字符串確定物理位置並正確創建子控件。儘管second signature接受控件類作爲類類型以及構造函數的任何參數,但子控件是而不是,如TRULY Understanding Dynamic Controls中詳述的那樣創建。
那麼如何以最清潔的方式消除這種順序依賴性?我的第一個想法是,如果我動態地創建了ControlX
中的子控件,但那對於較大的控件來說可能很麻煩。思考?
是的,你理解正確。這絕對是可行的。 – 2009-09-23 20:38:33