几个星期前,我在MSDN杂志上看到了this article,该杂志总体上讨论了MVVM。其中一个突出的是DynamicViewModel类。它解决了使用MVVM模式的应用程序常见的代码复制问题。
所以我想知道,还有其他人尝试过使用它吗?你怎么看呢?看,尽管看起来很浅,但是当ViewModel完全依赖于动态属性访问时,其中一个让我失望的事情就是缺乏智能感知。因此,我通常倾向于返回“代码重复”并在我的ViewModel中实现CLR属性。
另外,我不确定使用这个类的性能如何。有人有想法吗?
感谢。
答案 0 :(得分:2)
您对智能感知的直觉比您想象的更深。
实际上,视图模型是除名称以外的所有接口。通过选择要在视图模型中实现的属性子集,您可以显式定义域对象向视图公开的接口。至少以这种方式使视图模型动态化,丢弃该决策点。它说任何设计视图的人都可以决定将域模型的哪些属性直接暴露给用户。
我不知道这样做是不好的,但我知道如果不经过考虑就这样做是不好的。
这种隐含性让我对这种方法产生了最大的麻烦。在我看来,你可能想要在某个地方找到一个域属性列表,它可以让用户面向。手动实现整个视图模型是维护此列表的一种笨拙方式,但它是 方式。