我創建了一個示例應用程序,只是爲了測試並嘗試一些wpf的功能。我基本上是在wpf中嘗試數據綁定,並且或多或少地快速完成其餘的部分。那麼,我遇到了一個問題(是的,應該在開始編碼之前預先考慮:)),我想知道什麼是最好的重構解決方案。有關接口實現和可擴展性的體系結構問題
我有一個簡單的界面,基於定義的過程返回對象列表。
public interface IDoStuff<out T>
{
IEnumerable<T> Do(string someParam);
}
我已經爲這個接口創建了幾個實現。然後,我在WPF視圖,它與硬編碼值的下拉列表中,並根據您選擇的條件,instatiates接口的實現,並填充一些列表
foreach (var item in new IDoSTuffImplementation1()<MyObj>.Do("imp 1"))
{
MyObjs.Add(item);
}
亞特上MyObjs是DataContext的一個列表視圖,並顯示事物等等,但這不是主要問題。
這是全部硬編碼,不是很好。如果我曾經實現一個新的界面,我需要將它添加到下拉列表中,併爲該特定實現創建一個新的foreach(更多重複代碼)
好的,這是我對改善/重構的印象爲了可擴展性。 我在想一個好方法是使用某種MVVM模式,將wpf視圖變爲視圖+視圖模型。 viewmodel會使用像spring這樣的IoC,它會(通過xml)實例化一個特定的接口實現,並將其注入到viewmodel中,然後調用它的「Do」方法,並且每個人都高興。所以這樣,當我們實現一個新組件時,唯一需要做的就是將它添加到xml配置文件中。 建議,意見?最好的方法是什麼? 謝謝!!
這真的沒有什麼幫助,我的主要問題是對架構(和建議的增強)認爲,而不是如何進行數據綁定。 – 2010-12-13 10:03:18
你提到MVVM,這就是爲什麼我建議你使用'Property'而不是'Method'。 MVVM基於'Notifications','Data Binding'和'Commands'。使用'Unity'或'MEF'作爲'IoC'。 – decyclone 2010-12-13 10:06:45