所以,我有一個C#應用程序,它具有大約4層深的自定義類型層次結構。C#中DSL /自定義類型的工具包?
此分層的存在是爲了提供數據驗證和更改事件傳播的乾淨實施。
一個例子是: DocumentNameValue -> NameValue - > StringValue -> BaseDataValue
。
該系統工作正常,但給予所有層間接性,性能衝浪者。絕對而言,這不是一個巨大的打擊,但它確實加起來。
爲了澄清,性能問題似乎是數據訪問發生嵌套調用的結果。
例如,調用DocumentNameValue.setValue("test.doc")
將導致層次結構的每一層都在輸入上運行特定的驗證測試。這些從基地開始並向上移動。一路上也發生了各種各樣的事件。該值實際上是「存儲」在層次結構的基礎上的,如果這有意義的話。
因爲所有我真的做的是確定一個類型的嚴格的等級制度,確實存在一個推薦的方法做任何的:
- 變換在此C#代碼爲「平」高性能等同? (運行時或編譯時)
- 或者,或許更好,構建一個DSL只會吐出類型/對象的等效列表?
總體目標是雙重的:具有特定於我的應用程序問題域的強類型,提供一個乾淨的地方來放置我的驗證規則。
任何人都可以提供一些提示/建議嗎?我做這一切都錯了嗎?
謝謝
您仍然沒有給我們任何理由認爲層次結構與性能問題有關,甚至根本不存在性能問題。 – 2010-12-15 00:37:36