代码之家  ›  专栏  ›  技术社区  ›  Sam Harwell

通知应用程序集合已更改的模式?

  •  0
  • Sam Harwell  · 技术社区  · 16 年前

    假设我有如下基本界面:

    public interface IObjectProvider
    {
        IEnumerable<IObject> GetObjects();
    }
    

    您将如何重组此接口以提供此功能?我希望结果能够用于应用程序中的许多“提供者”接口,以实现良好的设计一致性。

    示例:以下内容以简洁易懂的方式提供了此功能,但添加了显著的耦合(包括在.NET 4.0之前的代码中对WPF程序集的引用)。既然我们知道一旦代码进入.NET4.0,它就会自动变得“更轻”,那么我是否应该使用它呢?

    public interface IObjectProvider
    {
        ReadOnlyObservableCollection<IObject> Objects
        {
            get;
        }
    }
    

    编辑1:

    根据里德的回答,我倾向于离开学校 IObjectProvider 接口未更改,原因如下:

    • 声明对于所有提供程序,如果提供程序支持提供的集合已更改的通知,则 GetObjects() 必将实施 INotifyCollectionChanged

    在我的设计中,还有另外两种情况需要考虑:

    • 提供的集合从未更改。
    • 提供的集合可能会更改,但客户端需要轮询是否需要更新。
    1 回复  |  直到 16 年前
        1
  •  5
  •   Reed Copsey    16 年前

    您可以始终为此使用接口,例如 INotifyPropertyChanged INotifyCollectionChanged .

    推荐文章