我创建了一个示例应用程序,只是为了测试并尝试一些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