【发布时间】:2015-06-12 10:02:34
【问题描述】:
我想要一个通用类来处理数据处理创建、更新和删除的内存缓存。底层模型继承自一个 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>>创建嵌套流,以便在每个内部流结束时删除在内部流上添加/更新的任何模型。 -
听起来很有趣,我没想到。我不确定它在使用中会有多方便,以及它会给实现增加多少开销。我会试一试的。
-
您是否仅限于一个流?或者你可以有多个?
-
您是否建议为每个操作创建单独的流?或者至少专门用于删除?听起来也不错!
-
第一个,所以你会有
ItemChanged、ItemAdded、ItemDeleted之类的东西。如果您真的需要,您可以合并添加和更改,但我喜欢通过拆分关注点来分离关注点,这样消费者就不必总是担心他们之前是否看过某个项目。
标签: c# system.reactive