Help needed with customizing Dump
I want to customize Dump for the following class:
void Main() { var list = new List<AggregateRanking> { new AggregateRanking { A=3, B=0, C=1, D=6}, new AggregateRanking { A=30M, B=0, C=10, D=60, AsPercentage = true }, }; list.Dump(noTotals: true); } // You can define other methods, fields, classes and namespaces here public record AggregateRanking { public decimal A { get; set; } public decimal B { get; set; } public decimal C { get; set; } public decimal D { get; set; } public decimal Total => A + B + C + D; public bool AsPercentage { get; set; } object ToDump() => Util.ToExpando(this, exclude: nameof(AsPercentage)); }
This currently is dumped as:
AΞΞ | BΞΞ | CΞΞ | DΞΞ | TotalΞΞ |
---|---|---|---|---|
3 | 0 | 1 | 6 | 10 |
30 | 0 | 10 | 60 | 100 |
What I would like to have:
AΞΞ | BΞΞ | CΞΞ | DΞΞ | TotalΞΞ |
---|---|---|---|---|
3 | 0 | 1 | 6 | 10 |
30 % | 0 % | 10 % | 60 % | 100 % |
So aligned right and with the percentage sign added if the property AsPercentage
is true.
How do I do this? Because if I convert the columns to strings, they get aligned to the left.
Thanks in advance!
Comments
For now, you can do the following (although you will lose the auto-graphing option):
The next LINQPad beta will allow this (which will preserve the auto-graphing option):
Thank you very much!
Changed it a bit:
It now does exactly what I wanted.
Only the line
gives a warning:
Warning: CS8619 Nullability of reference types in value of type 'ExpandoObject' doesn't match target type 'IDictionary<string, object>'.
For now I ignore it...
If you have nullable reference types enabled, change
IDictionary<string,object>
toIDictionary<string,object?>
to avoid the warning.