说我有一个如下的基本界面:
public interface IObjectProvider
{
IEnumerable<IObject> GetObjects();
}
对象源是一些可能会更新的后备存储,并且此接口的实现负责使用该后备存储。现在,我希望此接口的使用者能够在此接口提供的对象集合发生更改时执行操作。 您将如何重组此界面以提供此功能?我希望结果可以用于应用程序中的许多“提供者”接口,以获得良好的设计一致性。
示例:以下以简洁易懂的方式提供此功能,但增加了重要的耦合(包括对.NET 4.0之前的代码中的WPF程序集的引用)。我应该使用它,因为我们知道一旦代码进入.NET 4.0,它将自动“更轻”吗?
public interface IObjectProvider
{
ReadOnlyObservableCollection<IObject> Objects
{
get;
}
}
根据Reed的回答,我倾向于保持IObjectProvider
界面不变,原因如下:
GetObjects()
返回的值必须实现INotifyCollectionChanged
。此外还有两个案例,我仍然需要在我的设计中考虑:
答案 0 :(得分:5)
您可以随时使用这些界面,例如INotifyPropertyChanged和INotifyCollectionChanged。
这将允许您使用自定义集合和标准接口,而无需引用WPF。