【发布时间】:2015-01-21 16:59:22
【问题描述】:
我想将多个可观察对象(每个对象返回一个更新对象)组合成一个字典对象。
这是我想要达到的目标的示例:
private IObservable<IDictionary<string, IUpdate>> CreateUpdateStreams(Product product)
{
var codeObservables = product.Codes.Select(code => CreateUpdateStream(code)).ToList();
//???
return pointObs.Merge().Select(update => ...);
}
private IObservable<IUpdate> CreateUpdateStream(string code)
{
...
//return an observable of IUpdate
}
- 我想将所有 IUpdate 合并到一个单独的更新字典中,其中键 = 代码和值 = IUpdate
- CreateUpdateStreams 的调用者将知道产品,并希望根据更新对每个 Code 对象的某些属性进行更改。例如
产品 = Foo
Product.Codes = {Code1, Code2, Code3}
IDictionary = {Code1, "a"}, {Code2, "b"}, {Code3, "c"}
根据更新的值(在本例中为 a/b/c),将对相应的代码进行不同的更改,例如设置一个属性,如 Code.State = "a" 等。
由于每个 codeObservable 都会以不同的速率更新,Merge 似乎是一个明智的起点。我不确定如何让各个可观察对象的更新更新一个字典对象,该对象保留过去的值。
【问题讨论】:
-
IUpdate长什么样子? -
希望我做对了 :),如果我是对的,你需要 Product.Codes.State 重新考虑你的实现并使用元组字典(带有对象的元组,只是字符串)codeproject.com/Articles/193537/C-Tuples 或stackoverflow.com/questions/955982/…
标签: c# system.reactive