.net MVP事件或属性

.net MVP事件或属性,.net,mvp,.net,Mvp,我正在windows窗体应用程序中使用MVP模式。我需要更改视图上的单选按钮。我可以通过在视图上公开布尔属性来实现这一点,但我是否应该使用事件来操纵视图?使用“普通语言”分析,我会说“无论是否显示单选按钮都是视图的属性”,因此使用实际属性将其传达给视图 另一种(技术)可能性是在演示者上有一个事件,即RadioButtonVisibilityChanged,该事件由视图监听,并通过EventArgs传递新的可见性。这与独立且不了解主持人的观点背道而驰,因此破坏了MVP模式。我建议不要这样胡说八道。

我正在windows窗体应用程序中使用MVP模式。我需要更改视图上的单选按钮。我可以通过在视图上公开布尔属性来实现这一点,但我是否应该使用事件来操纵视图?

使用“普通语言”分析,我会说“无论是否显示单选按钮都是视图的属性”,因此使用实际属性将其传达给视图

另一种(技术)可能性是在演示者上有一个事件,即
RadioButtonVisibilityChanged
,该事件由视图监听,并通过
EventArgs
传递新的可见性。这与独立且不了解主持人的观点背道而驰,因此破坏了MVP模式。我建议不要这样胡说八道。

使用“普通语言”分析,我会说“无论是否显示单选按钮都是视图的属性”,因此使用实际属性将其传达给视图


另一种(技术)可能性是在演示者上有一个事件,即
RadioButtonVisibilityChanged
,该事件由视图监听,并通过
EventArgs
传递新的可见性。这与独立且不了解主持人的观点背道而驰,因此破坏了MVP模式。我建议不要这样胡说八道。

这是一个纯粹与务实的问题。。。还有一点个人风格。不要紧。。。事件只是比普通方法要做更多的工作,但更解耦。 个人

  • 我喜欢使视图保持解耦或不知道演示者,因此视图通过引发事件与演示者进行通信。这样就不需要视图引用演示者。保持沉默
  • 另一方面,演示者通常具有对视图(和模型)的成员引用。因此,它可以通过接口进行方法调用来与视图对话(允许替换视图,只要它们符合IView接口)。e、 g.在您的情况下,Set_X_选项(eOptionEnum)将是IView接口的一个成员,然后演示者可以适当地调用该接口

但是,您也可以通过双向使用事件来删除此IView依赖项(presenter引用了需要实例化和插入的IView)。。。然而,我发现它太多的工作。上述计划从未让我失望过。。。然而。

这是一个纯粹与务实的问题。。。还有一点个人风格。不要紧。。。事件只是比普通方法要做更多的工作,但更解耦。 个人

  • 我喜欢使视图保持解耦或不知道演示者,因此视图通过引发事件与演示者进行通信。这样就不需要视图引用演示者。保持沉默
  • 另一方面,演示者通常具有对视图(和模型)的成员引用。因此,它可以通过接口进行方法调用来与视图对话(允许替换视图,只要它们符合IView接口)。e、 g.在您的情况下,Set_X_选项(eOptionEnum)将是IView接口的一个成员,然后演示者可以适当地调用该接口

但是,您也可以通过双向使用事件来删除此IView依赖项(presenter引用了需要实例化和插入的IView)。。。然而,我发现它太多的工作。上述计划从未让我失望过。。。但是。

通常控制器通过属性更改视图,并订阅视图引发的事件以了解更改。下面是一个示例,即使在Asp.NET中,Windows窗体的工作原理基本相同。

通常,控制器通过属性更改视图,并订阅视图引发的事件以了解更改。下面是一个例子,即使在Asp.NET中,Windows窗体的工作原理基本相同。

是否存在您认为事件更合适的情况?是否存在您认为事件更合适的情况?因此演示者仍然是创建的我是视图构造函数,但没有更多的引用。这就是您的意思吗?不是。演示者创建视图(或者您可以使用依赖项反转来消除此问题),并将演示者中的事件处理程序连接到IView事件。视图实现只需实现所有IView方法并适当地引发事件。。。完全不知道演示者。TDD_GUI_DotNet-Gishu_Src.zip您能回答吗?因此演示者仍然是创建的我是视图构造函数,但没有更多的引用。这就是您的意思吗?不是。演示者创建视图(或者您可以使用依赖项反转来消除此问题),并将演示者中的事件处理程序连接到IView事件。视图实现只需实现所有IView方法并适当地引发事件。。。完全不知道演示者。你能回答吗?