【问题标题】:How to add (not replace) the content of a DumpContainer in LINQPad如何在 LINQPad 中添加(而不是替换)DumpContainer 的内容
【发布时间】:2020-05-19 16:31:51
【问题描述】:

我有一个DumpContainer,我想向其中动态添加内容。我知道我可以将Content 属性设置为一个新对象,但这会删除以前的内容。

如何添加而不是替换?

感谢您的帮助。

【问题讨论】:

  • 有什么原因不能仅仅连接新内容吗?你在Content 里放了什么? (例如dc.Content += "\n new line of content";)。
  • 嗨@NetMage,感谢您的帮助。 += 的问题是新内容堆积在旧内容的右侧。我希望它降下来。关门!

标签: c# linqpad


【解决方案1】:

更多选择:

如果您希望项目垂直显示,但不在表格中,请在 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;
    }
}    

【讨论】:

  • 这成功了!你是传奇@JoeAlbahari,非常感谢:)
  • 也许更多这些Util 方法可以记录在某处? :)
【解决方案2】:

如果您将一般对象放在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));

【讨论】:

    【解决方案3】:

    不要向 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&lt;&gt;,它会在发出对象时自动更新。 (导入 System.Reactive NuGet 包以使其工作。)

    var s = new Subject<string>();
    s.Dump();
    s.OnNext("message 1");
    s.OnNext("message 2");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多