检测对象';的内容已更改,是否更新对象?C#

检测对象';的内容已更改,是否更新对象?C#,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,问题 通常,操纵视图的控制器类(MVC、MVVM、MVp)可以访问多种服务。这些服务之一的目的是使用与控制器相关的数据更新控制器类 以这门课为例: public sealed class RestaurantInformation { public IEnumerable<Networking.Models.ServerModels.Restaurant> NearestRestaurants { get; internal set; } public IEnumer

问题

通常,操纵视图的控制器类(MVC、MVVM、MVp)可以访问多种服务。这些服务之一的目的是使用与控制器相关的数据更新控制器类

以这门课为例:

public sealed class RestaurantInformation
{
    public IEnumerable<Networking.Models.ServerModels.Restaurant> NearestRestaurants { get; internal set; }
    public IEnumerable<Networking.Models.ServerModels.Restaurant> NewestRestaurants { get; internal set; }
    public IEnumerable<Networking.Models.ServerModels.Category> Categories { get; internal set; }
}
公共密封类餐厅信息
{
public IEnumerable nearestrestaturants{get;internal set;}
public IEnumerable newestrestaturants{get;internal set;}
公共IEnumerable类别{get;内部集合;}
}
每当服务从网络接收到关于类别、newestrestarants或nearestrestarants的更新信息时,它将所有数据打包到一个对象中,该对象具有类类型restarantInformation,并将其发送到控制器类以传递给视图

我决定在我的艺术普通中等教育证书中好好利用我的C成绩,并绘制图表来帮助你们理解我的问题。(为即将看到的内容道歉。)

如您现在所见,流程如下所示:

  • 视图加载,该视图依次调用RestaurantViewControl
  • RestaurantViewControl然后调用RestaurantService从API检索新类别
  • API将新类别返回给RestaurantService。(您可以在这里看到餐厅服务现在有一个包含B的列表)
  • RestaurantService然后通知RestaurantViewControl使用上面的类和新的类别列表
  • 我们现在必须使用新项目以最有效的方式更新RestaurantViewControl中的类别列表
  • 我目前正在清除类别列表,然后用新列表替换所有值。我想知道的两件事是:

  • 检测类别列表对象中的更改最有效的方法是什么
  • 更新类别列表的最有效方法是什么?类别列表可能仍然包含在该列表中完全有效的对象

  • 看来你有个直截了当的问题。您将拥有一个服务层,当您显示餐厅列表页面时,该层将调用该服务层

    因此,您的collectionView/listView只显示基于该数据的视图单元格中的项目列表。一个例子


    通常,您只需在第一次访问页面时检查更改、拉入刷新,或者在缓存过期的设定时间后设置缓存。

    “最佳”通常是意见和个人偏好的问题Hi@Saameer我认为这个答案不相关,它也不能回答上面提到的任何一个问题。好吧,让我们一次回答一个问题。“检测类别列表对象中的更改最有效的方法是什么?”我回答道:“通常,您只需在第一次访问页面时检查更改,或者在缓存过期的设定时间后设置缓存即可刷新。”@jamesmalon