我正在尝试找出在Android中的多个屏幕上编辑一个复杂对象的最佳/正确方法。我有一个邀请集合的活动。在一个屏幕上编辑事件,在另一个屏幕上编辑邀请列表。用户首先编辑事件数据,然后转到地址簿,如屏幕,添加/删除邀请,然后返回事件屏幕,并将所有更改发送到服务器。
我正在使用Xamarin并希望在iOS和Android上都拥有相同的业务逻辑代码。在iOS上,我有一个带有InvitesList的Event对象。我将InvitesList传递给InvitesController并编辑此列表,基本上就是这样。一切都按预期工作。示例代码:
public class Event {
InvitesList Invites { get; private set; }
public async Task Save() {
await service.SaveEvent(this);
await service.SyncContacts(Invites.New, Invites.Removed);
}
}
我的问题是,如果我想在单独的活动中编辑InvitesList,则上述方案不适用于Android。 InvitesList知道如何从服务器加载数据,它还跟踪添加和删除,因此Event对象可以找出稍后需要执行的服务器API调用。 AFAIK我的选择是
我不喜欢上述任何解决方案。 任何人都可以建议一个可以让我保持业务对象完好的解决方案吗?我想在内部使用InvitesList的Event对象,并且能够在单独的活动中编辑InvitesList。理想情况下,我还希望仅将Android所需的更改保持在最低限度。
答案 0 :(得分:0)
如果您不想传递序列化对象,可以尝试使用Singleton模式在创建时为事件建模(并且只编辑每个活动中的实例)。
这里有一个很好的实现模式:http://csharpindepth.com/articles/general/singleton.aspx#nested-cctor