Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模型视图演示者:为什么模型是静态的?_C#_Wpf - Fatal编程技术网

C# 模型视图演示者:为什么模型是静态的?

C# 模型视图演示者:为什么模型是静态的?,c#,wpf,C#,Wpf,我一直试图完全理解模型视图演示器模式,因为它适用于C#。我有一个问题想不通 在许多示例中,我注意到模型被定义为静态的,并且是在Presenter基类(通常是泛型类)中构造的 在这种情况下,如何拥有多个模型类?据我所知,创建的每个演示者只能引用单个模型类 我现在看到的示例可以在这里找到:(重命名为.zip)。来自本教程: 我所面临的总体问题是,上面的示例如何适应具有多个视图/演示者/模型的工作应用程序。这可能只是为了避免在示例中包含完整的IoC实现而进行的简化。MVP三元组通常在运行时由独立(即:

我一直试图完全理解模型视图演示器模式,因为它适用于C#。我有一个问题想不通

在许多示例中,我注意到模型被定义为静态的,并且是在Presenter基类(通常是泛型类)中构造的

在这种情况下,如何拥有多个模型类?据我所知,创建的每个演示者只能引用单个模型类

我现在看到的示例可以在这里找到:(重命名为.zip)。来自本教程:


我所面临的总体问题是,上面的示例如何适应具有多个视图/演示者/模型的工作应用程序。

这可能只是为了避免在示例中包含完整的IoC实现而进行的简化。MVP三元组通常在运行时由独立(即:非静态、单例或其他共享)实例表示。在某些例外情况下,模型可能是共享实例,但这通常是例外而不是规则,并且通常只适用于只读表单或控件。

我想我理解。这是否意味着presenter类应该始终实例化一个模型类(因为它不是共享实例)?presenter应该实例化一个新的模型实例,或者从外部源接收它。例如,我通常向基本presenter添加一个Initialize(model,view)方法,然后根据模型值应用逻辑来确定如何实例化模型。如果该值为null,则调用一个抽象方法以允许子类创建新的模型实例。如果该值对应于模型的类型,则演示者仅将其用作其模型。如果该值对应于模型ID的类型,则ID值将传递给抽象方法以检索模型。