我是反应式扩展初学者。Gideon Engelberth 在我的问题中给了我关于 Reactive Extension 的出色回答。
如何使用 LINQ 或 Rx 在一个方法链上将 img url 转换为 HTML 中的 BASE64 字符串
现在我有第二个问题,即如何将 IObservable 返回值分配给 XDocument 实例。
Gideon 给了我下面的样品。
public IObservable<Unit> ReplaceImageLinks(XDocument document)
{
return (from element in GetImages(document)
let address = new Uri(element.Attribute("src").Value)
select (from data in DownloadAsync(address)
select Convert.ToBase64String(data)
).Do(base64 => element.Attribute("src").Value = base64)
).Merge()
.IgnoreElements()
.Select(s => Unit.Default);
}
我想这样做。布丁好像很难...
public void Convert(XDocument input, out XDocument output)
{
output = ReplaceImageLinks(input);
}