DumpLatest()
扩展方法仅适用于IObservable<T>
; 无法检测到项目已添加到 a List<T>
,因此 LinqPad 无法显示最后添加的值。
相反,您可以使用 aDumpContainer
并明确更改其内容:
var list = new List<object>();
var container = new DumpContainer();
container.Dump();
for (int i = 0; i < 100; i++)
{
var item = new { A = i.ToString(), B = new Random().Next() };
list.Add(item);
container.Content = item;
Thread.Sleep(1000);
}
Subject<T>
您也可以使用(可以说更优雅)获得相同的结果:
var subject = new Subject<object>();
subject.DumpLatest();
for (int i = 0; i < 100; i++)
{
var item = new { A = i.ToString(), B = new Random().Next() };
subject.OnNext(item);
Thread.Sleep(1000);
}
编辑:好的,我以为你只想看到最后一项。要打印整个列表,只需使用subject.Dump()
,正如 Joe 在评论中提到的那样。如果您使用第一种方法,请将列表本身放入, 并在循环中DumpContainer
调用它。Refresh()