gpt4 book ai didi

c# - 关于经典 MVC 的问题

转载 作者:太空狗 更新时间:2023-10-30 03:55:05 26 4
gpt4 key购买 nike

在经典 MVC 中,模型会通知 View 有关对其所做的更改。在 C# 中,这意味着我必须将我感兴趣的 View 子类化,并在子类中注册到模型的事件。例如,如果我要使用 C# 和 Winforms 实现 MVC,我必须继承 TextBox 类,然后在 MyTextBox 的构造函数中注册模型事件。我对么?这是如何在 Smalltalk 中发布的?是否还需要对每个 View 进行子类化以注册模型的事件,或者是否有某种方法可以动态地将事件动态添加到 View 中?

谢谢

最佳答案

要解决有关 Smalltalk(MVC 的起源)如何处理这个问题的子问题:最初(这是 Smalltalk-80,Trygve Reenskaug 实现 MVC 的地方)确实有必要为您的特定 View 注册 View 父类(super class)的子类它作为订阅者从具体模型子类更改事件。Smalltalk 中的 Controller 只是将窗口事件(尤其是键盘和鼠标)委托(delegate)或分派(dispatch)给模型。基本上你可以说 Controller 修改了模型对象,而 View 只显示了它们。然而,动态值的概念,或后来被称为 ValueModels 的概念,使这种方法在 VisualWorks Smalltalk 中过时了。现在您可以创建一个标准的 GUI 框架,不再需要子类化,并且每个 View 都可以将自己注册为抽象模型类的观察者。 View 的模型将不再是模型类,而是具有标准接口(interface)的值模型。更多相关信息:http://st-www.cs.illinois.edu/users/brant/papers/ValueModel/ValueModels.htm

关于c# - 关于经典 MVC 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com