标签: mvp

构建winforms C#解决方案

所以我正在重新组织一个winforms C#解决方案,以帮助解耦并使其更清洁,更有条理.该解决方案可跟踪小型业务订单等..

到目前为止,我已经完成了这些项目

App.View - 所有GUI相关代码
App.Data - 只是数据结构和接口.没有其他实现代码
App.BusinessLogic - 没有GUI引用的所有业务逻辑代码

我有一些课程,我无法弄清楚他们属于哪里.请让我知道您对每个课程应该去哪个项目的想法,或者是否有另一个项目应该为此创建.

  1. 从数据库中检索用户首选项的类
  2. 一个从静态数据服务器检索静态数据并返回数据结果集的类.
  3. 一个降低用户权利的类
  4. 存储订单哈希表的模型类
  5. 通过电子邮件发送有关用户操作的消息的类

c# model-view-controller mvp projects winforms

6
推荐指数
1
解决办法
3151
查看次数

带表的GWT MVP

在GWT中使用MVP时,如何使用表?例如,如果您有一个用户表,您的视图是这样的吗?

public interface MyDisplay{

HasValue<User> users();

}
Run Code Online (Sandbox Code Playgroud)

还是会更像这样?

public interface MyDisplay{

HasValue<TableRow> rows();

}
Run Code Online (Sandbox Code Playgroud)

在你开始处理需要显示非原始数据列表的小部件之前,MVP很有意义.任何人都能解释一下吗?

这个邮件列表存档似乎提出了同样的问题,但从未达成可靠的解决方案......

http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg24546.html

mvp gwt

6
推荐指数
1
解决办法
3626
查看次数

自动映射自定义映射异常

更新1-13-10 我已经能够使用下面的代码找到一些成功的映射.我基本上忽略了没有映射的任何属性,然后映射它们.我希望得到关于我是否以最佳方式进行此项讨论的反馈意见.另外,我不知道如何进行单元测试这种映射.我的印象是使用AutoMapper应该有助于减轻检查每个属性的繁琐.

这是我的新代码:

Mapper.CreateMap<MoveEntity, MoveEntityDto>()
           .ForMember(dest => dest.PrimaryOriginTransferee, opt => opt.Ignore())
           .ForMember(dest => dest.PrimaryDestinationTransferee, opt => opt.Ignore())
           .ForMember(dest => dest.Customer, opt => opt.Ignore())
           .ForMember(dest => dest.DestinationAddress, opt => opt.Ignore())
           .ForMember(dest => dest.OriginAddress, opt => opt.Ignore())
           .ForMember(dest => dest.Order, opt => opt.Ignore())
           .ForMember(dest => dest.Shipment, opt => opt.Ignore())
           .ForMember(dest => dest.SourceSystemName, opt => opt.Ignore());

        Mapper.CreateMap<ContactEntity, TransfereeEntityDto>();
        Mapper.CreateMap<CustomerEntity, CustomerEntityDto>();
        Mapper.CreateMap<AddressEntity, AddressEntityDto>();
        Mapper.CreateMap<OrderEntity, OrderEntityDto>()
            .ForMember(dest => dest.OrderForwarding, opt => opt.Ignore())
            .ForMember(dest => dest.Forwarder, opt => opt.Ignore());
        Mapper.CreateMap<ShipmentEntity, ShipmentEntityDto>()
            .ForMember(dest => dest.Services, opt => …
Run Code Online (Sandbox Code Playgroud)

.net c# mvp automapper

6
推荐指数
2
解决办法
2万
查看次数

解耦视图,演示文稿和ASP.NET Web窗体

我有一个ASP.NET Web窗体页面,演示者需要填充控件.这种交互对页面生命周期有点敏感,我想知道是否有一个技巧,我不知道.

我想要对整个事情保持实用,但不要牺牲可测试性.

目前我有这个:

public interface ISomeContract
{
    void InstantiateIn(System.Web.UI.Control container); 
}
Run Code Online (Sandbox Code Playgroud)

这个契约依赖于System.Web.UI.Control,我需要能够使用ASP.NET Web Forms编程模型.但是视图和演示者都不了解ASP.NET服务器控件.

我该如何解决这个问题?如何在我的具体视图中使用ASP.NET Web窗体编程模型而不在合同程序集中使用System.Web.UI.Control依赖项?

为了澄清一点,这种类型的界面都是关于UI组合(使用MEF).它在整个框架中是众所周知的,但它实际上只是从具体视图中调用.具体视图仍然是唯一知道ASP.NET Web窗体的东西.但是,这些公共方法InstantiateIn(System.Web.UI.Control)存在于我的合同程序集中,并且暗示了对ASP.NET Web窗体的依赖.

我一直在考虑一些双重调度机制甚至访问者模式来尝试解决这个问题,但我还不知道我想去哪个方向,我真的想对此事进行一些投入.

c# asp.net mvp dependency-injection mef

6
推荐指数
1
解决办法
1151
查看次数

在GWT中需要解除绑定演示者的绑定

我按照此处给出的示例使用我的GWT应用程序中的MVP模式http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html

我为MainView中的每个面板都有一个MainPresenter和sub-presenter.为了展示一个新的子演示者,我做了这样的事情:

presenter = new PresenterA(new ViewA(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Run Code Online (Sandbox Code Playgroud)

何时PresenterA创建,它将自己绑定到事件中ViewA.我的问题是,切换到新演示者的正确方法是什么?现在,我只是创建一个新的演示者并将其附加到同一个面板,如下所示:

presenter = new PresenterB(new ViewB(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Run Code Online (Sandbox Code Playgroud)

我对这种方法有些怀疑.首先,当我切换到新的演示者时,我是否导致内存泄漏?我丢失了引用旧演示者的字段并将其从附加到的面板中清除.我想这意味着它应该是垃圾收集,但我不是很确定.其次,老主持人的事件绑定会发生什么?这些绑定是否会阻止演示者被垃圾收集?我需要先解开它们吗?

在没有内存泄漏和绑定到"死"事件的情况下处理切换演示者的情况的正确方法是什么.

javascript java mvp gwt memory-leaks

6
推荐指数
1
解决办法
2175
查看次数

将Form.ShowDialog()代码重构为MVP

我有一个WinForm,并设置了很少的属性.
例如:表格上接受姓名,地址.
(实际例子中有更多属性)

目前的实施有点类似于

frmName frmView = new  frmName (); //frmName  is WINFORM 
frmView.Name= "ABC"; //any valid string or read this from file
frmView.Address="SomeAddress"; //any valid address or read this from file

if (frmView.ShowDialog() == DialogResult.OK)
{
    //OK CLICK PROCESS and
    // get new values edited by user
     string name = frmView .Name;
     string address = frmView.Address;
     doProcessing(name,address);
}
else{
  //Ignore cancel click..
}
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为基于MVP的Winform应用程序.
还需要将ShowDialog()上完成的处理重构为Presenter/Model
(dunno到底在哪里做)?
还需要避免在表单本身上编写代码.(被动视图)

谢谢大家.

mvp refactoring design-patterns winforms

6
推荐指数
1
解决办法
1780
查看次数

样本MVC/MVP winforms应用程序(非平凡)

我正在寻找在Winforms(C#.NET)中实现的MVC/MVP的一个非平凡的例子.我搜索了网站,但只获得了一些简单的例子,多一点会有所帮助.

我特别关注实现视图的方法(查看主子模型)和控制器/演示者.

.net c# model-view-controller mvp

6
推荐指数
1
解决办法
4029
查看次数

澄清:MVC,MVP,MVVM

我正在阅读MVC,MVP,MVVM之间的区别

来源:这里

替代文字

我的疑问是,图表(MVP)(MVVM)显示了Modle和Presenter,Model和ViewModel之间的双向箭头.

Presenter和ViewModel明显知道Model.But是否意味着Model知道Presenter和ViewModel?

model-view-controller mvp mvvm

6
推荐指数
1
解决办法
3693
查看次数

如何使用Dagger2将Presenter注入视图(MVP模式)

我想使用MVP模式构建一个Android应用程序.

我有一个片段(视图)和一个演示者类.

我想要的是基本上将演示者注入片段,并将片段设置为演示者的视图(通过视图将实现的接口)

如何使用依赖注入(使用Dagger2)轻松​​正确地连接2?

编辑:

另外,我希望演示者成为单身人士,因此它能够在方向变化中保持数据和状态

mvp android dagger-2

6
推荐指数
1
解决办法
2205
查看次数

在MVP结构中哪个类负责保存列表项以及如何通知数据更改

我试图重构我的一个活动类来实现mvp(使用mvp mosby库).我有一个RecyclerView,在这个视图中有一些项目在运行时会对它们进行一些更改.例如,我做了一些I/O操作并改变了一行.

我认为将我的项目保留在演示者课程中会更好; 这是什么最好的做法?将此保留在1)演示者或2)活动中或3)仅保留适配器中的视图相关项和演示者中的所有其他项.

活动现在直接保留项目并更改活动中的项目行,然后通知适配器.是不是更好地在适配器中移动所有这一行并通知适配器类中的适配器?例如,我想要一些row.where的更改图标,哪个类负责?适配器?活动?现在我想在适配器中实现它:

changeItemIcon(int position, int iconRes){
    mImages.get(position).setICon(iconRes);
    notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)

我在活动上调用此方法并从演示者调用活动方法.

好吗?这样做的最佳做法是什么?

UPDATE

我也发现这个问题(使用RecyclerView适配器更新数据的最佳方法),使用适配器方法更改项目.但修改呢?我需要继续参考我活动中的项目吗?

java mvp android code-cleanup android-adapter

6
推荐指数
1
解决办法
2370
查看次数