【发布时间】:2011-05-24 13:47:21
【问题描述】:
我创建了一个示例应用程序,只是为了测试和试用 wpf 的一些功能。我基本上是在尝试 wpf 中的数据绑定,并或多或少地快速完成了其余的工作。然后,我遇到了一个架构问题(是的,应该在开始编码之前提前考虑:))我想知道什么是最好的重构解决方案。
我有一个简单的接口,它根据定义的过程返回对象列表。
public interface IDoStuff<out T>
{
IEnumerable<T> Do(string someParam);
}
我已经为这个接口创建了几个实现。然后我在 wpf 中有一个视图,它有一个带有硬编码值的下拉列表,并且根据您选择的内容,实例化接口的实现并填充一些列表
foreach (var item in new IDoSTuffImplementation1()<MyObj>.Do("imp 1"))
{
MyObjs.Add(item);
}
MyObjs 上的 ater 是列表视图的 DataContext,并显示诸如此类的东西,但这不是主要问题。
这都是硬编码的,不是很好。如果我要实现一个新接口,我需要将它添加到下拉列表中,并为该特定实现创建一个新的 foreach(更多重复代码)
好的,这是我对改进/重构以实现可扩展性的印象。 我在想一个好的方法是使用某种 MVVM 模式,将 wpf 视图变成视图 + 视图模型。 viewmodel 将使用某种 IoC,如 spring,它会(通过 xml)实例化接口的一个特定实现,并将其注入 viewmodel,然后调用它的“Do”方法,每个人都很高兴。这样,当我们实现一个新组件时,唯一需要做的就是将它添加到 xml 配置文件中。 建议、意见?如果有的话,最好的方法是什么? 谢谢!!
【问题讨论】:
标签: c# design-patterns architecture mvvm