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对差异化部分分类处理。