我希望有一个通用类来处理数据的内存缓存,包括创建、更新和删除。底层模型继承自一个具有字符串类型Id的接口。
interface IModel
{
string Id { get; }
}
处理创建和更新很容易。例如,如果我想订阅流并填充字典,我知道如果模型ID不存在,则需要创建,否则就是更新。
我的问题是:
如果不引入另一个包装我的模型的类,你会如何处理删除?我想保持一个 IObservable<TModel>
,而不是像 IObservable<Event<TModel>>
或 IObservable<Pair<string, TModel>>
这样的东西,但我不知道怎么做。这可能吗?
interface IDataService<TModel>
{
IObservable<TModel> DataStream { get; }
}
IObservable<IObservable<TModel>>
创建嵌套流,这样当每个内部流结束时,在内部流上添加/更新的任何模型都会被删除。 - EnigmativityItemChanged
、ItemAdded
和ItemDeleted
这样命名。如果你真的想要,可以将添加和更改组合在一起,但我喜欢通过将它们分开来分离关注点,这样可以避免消费者总是担心他们之前是否看到过一个项目。 - paulpdaniels