Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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# MVP在哪里处理文件操作?_C#_User Interface_File Io_Mvp - Fatal编程技术网

C# MVP在哪里处理文件操作?

C# MVP在哪里处理文件操作?,c#,user-interface,file-io,mvp,C#,User Interface,File Io,Mvp,这可能是一个愚蠢的问题,但在我当前的搜索中,我发现了大部分关于数据表示以及演示者和视图之间相互作用的信息,但很少有关于模型和演示者的信息 基本上,假设我有一个C应用程序,它打开一个CSV文件,它是一个5乘5的数字数组。现在,如果我想将这个5乘5的CSV数组加载到一个整数数组中,那么在grand scheme中这是在哪里处理的呢 这是我目前遵循MVP的想法,但如果我错了,请纠正我,如果我成功做到了,请确认我是对的 用户单击按钮以加载文件。 该视图加载一个showOpenDialog供用户选择文件。

这可能是一个愚蠢的问题,但在我当前的搜索中,我发现了大部分关于数据表示以及演示者和视图之间相互作用的信息,但很少有关于模型和演示者的信息

基本上,假设我有一个C应用程序,它打开一个CSV文件,它是一个5乘5的数字数组。现在,如果我想将这个5乘5的CSV数组加载到一个整数数组中,那么在grand scheme中这是在哪里处理的呢

这是我目前遵循MVP的想法,但如果我错了,请纠正我,如果我成功做到了,请确认我是对的

用户单击按钮以加载文件。 该视图加载一个showOpenDialog供用户选择文件。 用户在该对话框中单击OK后,视图将向演示者发送一个包含该文件名的事件。 演示者获取该文件名,处理文件打开并将其解析为5 x 5 int数组。 然后,演示者通过事件向模型提供该int数组。然后模型存储该数组。 该模型给出一个事件,表明其数据已更改。 演示者侦听并处理此事件,将该5 x 5 int数组放入数据表中。 演示者引发一个事件,表示它有一个新的DataTableready。 视图侦听和处理此事件,并使用DataTable提供的信息更新dataGridView。
我对MVP的理解在第五步变得模糊不清。是这样的,还是我误解了MVP中每个组件的功能?

您在MVP中利用事件的方式很有趣。。不过我一般都没见过

根据我的经验,以下是工作流程:

在视图中单击按钮 查看显示对话框 视图在属性中存储文件名 视图调用Presenter方法,例如loadFile 演示者使用视图界面从属性检索文件名 演示者a使用服务执行加载,或b加载文件本身 模型是通过服务或演示者构建的 模型通过loadFile方法传回视图
这不是我的方式,因为这是我的猜测。作为后续问题,何时使用服务加载文件比让演示者自己加载文件更合适?这取决于具体情况。通常,当您的业务逻辑变得更复杂时。在我自己的应用程序中,我通常以任何一种方式合并服务层。。但在工作中,我们总是这样做,这是因为我们的逻辑水平。