如何在 LINQPad 中添加(而不是替换)DumpContainer 的内容
How to add (not replace) the content of a DumpContainer in LINQPad
我有一个 DumpContainer
,我想向其中动态添加内容。我知道我可以将 Content
属性 设置为一个新对象,但这会删除以前的内容。
如何添加而不是替换?
感谢您的帮助。
如果您将通用对象放在 DumpContainer
中,这些对象与字段值等一起显示,您可以使用 Util.ToHtmlString
和然后连接。
var dc = new DumpContainer();
dc.Dump();
dc.Content = Util.RawHtml(Util.ToHtmlString(true, aVariable));
// some time later...
dc.Content = Util.RawHtml(Util.ToHtmlString(dc.Content)+Util.ToHtmlString(true, anotherVar));
不要向 DumpContainer 添加内容,而是继续更新它,但要使其内容包含您要添加的所有数据。
var c = new DumpContainer();
var list = new List<string> {"message 1"};
c.Content = list;
c.Dump();
list.Add("message 2");
c.UpdateContent(list);
或者,您可以转储 IObservable<>
,它会在对象发出时自动更新。 (导入 System.Reactive NuGet 包以使其工作。)
var s = new Subject<string>();
s.Dump();
s.OnNext("message 1");
s.OnNext("message 2");
还有几个选项:
如果您希望项目垂直显示,而不是在 table 中,请在 DumpContainer
中使用 Util.VerticalRun
:
var content = new List<object>();
var dc = new DumpContainer (Util.VerticalRun (content)).Dump();
content.Add ("some text");
dc.Refresh();
content.Add (new Uri ("http://www.linqpad.net"));
dc.Refresh();
如果项是异步生成的,请使用异步流 (C# 8):
async Task Main()
{
// LINQPad dumps IAsyncEnumerables in the same way as IObservables:
RangeAsync (0, 10).Dump();
}
public static async IAsyncEnumerable<int> RangeAsync (int start, int count)
{
for (int i = start; i < start + count; i++)
{
await Task.Delay (100);
yield return i;
}
}
我有一个 DumpContainer
,我想向其中动态添加内容。我知道我可以将 Content
属性 设置为一个新对象,但这会删除以前的内容。
如何添加而不是替换?
感谢您的帮助。
如果您将通用对象放在 DumpContainer
中,这些对象与字段值等一起显示,您可以使用 Util.ToHtmlString
和然后连接。
var dc = new DumpContainer();
dc.Dump();
dc.Content = Util.RawHtml(Util.ToHtmlString(true, aVariable));
// some time later...
dc.Content = Util.RawHtml(Util.ToHtmlString(dc.Content)+Util.ToHtmlString(true, anotherVar));
不要向 DumpContainer 添加内容,而是继续更新它,但要使其内容包含您要添加的所有数据。
var c = new DumpContainer();
var list = new List<string> {"message 1"};
c.Content = list;
c.Dump();
list.Add("message 2");
c.UpdateContent(list);
或者,您可以转储 IObservable<>
,它会在对象发出时自动更新。 (导入 System.Reactive NuGet 包以使其工作。)
var s = new Subject<string>();
s.Dump();
s.OnNext("message 1");
s.OnNext("message 2");
还有几个选项:
如果您希望项目垂直显示,而不是在 table 中,请在 DumpContainer
中使用 Util.VerticalRun
:
var content = new List<object>();
var dc = new DumpContainer (Util.VerticalRun (content)).Dump();
content.Add ("some text");
dc.Refresh();
content.Add (new Uri ("http://www.linqpad.net"));
dc.Refresh();
如果项是异步生成的,请使用异步流 (C# 8):
async Task Main()
{
// LINQPad dumps IAsyncEnumerables in the same way as IObservables:
RangeAsync (0, 10).Dump();
}
public static async IAsyncEnumerable<int> RangeAsync (int start, int count)
{
for (int i = start; i < start + count; i++)
{
await Task.Delay (100);
yield return i;
}
}