Silverlight项目笔记6:Linq求差集、交集&检查网络连接状态&重载构造函数复用窗口

1.使用Linq求差集、交集

     使用场景:

     需要从数据中心获得用户数据,并以此为标准,同步系统的用户信息,对系统中多余的用户进行删除操作,缺失的用户进行添加操作,对信息更新了的用户进行编辑操作更新。

     所以需要通过对数据中心以及系统现有用户信息进行比较,分为三部分:

    (1) Linq取差集,找出需要删除的用户数据,进行删除(USERNAME为唯一值字段)。

            使用的是Except这个方法。

     

    (2)使用Linq提供的Intersect方法,取得两个用户集合的交集,遍历检查进行更新。

     

    (3)同样再次取差集,但这次是新的用户信息集合Except现有用户信息,获取需要添加的数据集合,执行添加操作。

     

2.检查网络连接状态

    一般的网络请求方法都会返回连接的状态信息,比如iOS中NSURLConnection对应“- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response ”(当然现在推荐使用NSURLSession或AFNetworking等第三方库)

    C#肯定也提供了类似的方法,即GetResponseAsync,获得请求的HTTP代码进行进行判断。

    

    需要注意的是,在这之前还应该对URL地址输入框进行一个输入验证,因为可能输入的就不是一个URL地址。

    对于ArcGIS的动态服务ArcGISDynamicMapServiceLayer以及切片服务ArcGISTiledMapServiceLayer,也可以通过InitializationFailed这个方法做一个简单的服务有效性验证。

3.重载构造函数复用窗口

   使用场景:

   需要做创建角色以及编辑角色两种操作,操作窗口显示的信息完全一样,差异在于编辑角色信息时不能修改角色名称,以及数据库交互略有差异。

   所以完全可以只画一个窗口,针对不同场景做不同操作。通过重载构造函数(编辑操作对应的构造函数需要传入角色信息),并设定一个字段标识方便差异化处理即可。

   对于窗口中显示是否能够编辑,对输入框的IsReadOnly属性进行绑定,编辑操作时属性值为true,只读;

   对于窗口名称,同样做绑定处理,根据不同操作显示不同名称;

   对于数据库交互差异,同样可以通过判断标识符canEdit对差异化部分分类处理。

   

   

   

posted @ 2014-08-31 14:46  colinhou  阅读(880)  评论(0编辑  收藏  举报