|
void Main() { |
|
var fr = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR"); |
|
var enAu = System.Globalization.CultureInfo.CreateSpecificCulture("en-AU"); |
|
var zhCn = System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"); |
|
var invariant = System.Globalization.CultureInfo.InstalledUICulture; |
|
|
|
var chairSitTemplate = MessageTemplate.Parse("I sat at {@Chair} on {SitDate,10:dd-MMM-yyyy}"); |
|
|
|
chairSitTemplate.Format(fr, new Chair(), DateTimeOffset.UtcNow) |
|
.Dump("Format using fr-FR culture uses comma decimal separator and french month names"); |
|
|
|
chairSitTemplate.Format(zhCn, new Chair(), DateTimeOffset.UtcNow) |
|
.Dump("Format using zh-CN culture uses dot decimal separator and chinese month names"); |
|
|
|
chairSitTemplate.Format(enAu, new Chair()) |
|
.Dump("Format en-AU, only providing the first argument, leaving 'SitTime' empty"); |
|
|
|
MessageTemplate.Capture(chairSitTemplate.Text, new InfinitelyDeepChair(), DateTimeOffset.UtcNow) |
|
.Dump("Capturing will stop destructuring at 10 levels deep by default"); |
|
|
|
MessageTemplate.CaptureWith(2, null, null, chairSitTemplate, |
|
new object[] { new InfinitelyDeepChair(), DateTime.UtcNow }) |
|
.Dump("Capturing can be configuring to any maximum depth"); |
|
|
|
MessageTemplate.Capture("I sat at {Chair} on {SitTime}", new Chair(), DateTime.UtcNow) |
|
.Dump("Capture a chair without destructuring will use 'ToString'"); |
|
|
|
MessageTemplate.Capture("I sat at {Chair} on {SitTime}").Dump("Capture but provide no values"); |
|
} |
|
|
|
class InfinitelyDeepChair { |
|
public DateTimeOffset Value { get { return DateTimeOffset.UtcNow; } } |
|
public InfinitelyDeepChair Child { |
|
get { return new InfinitelyDeepChair(); } |
|
} |
|
} |
|
|
|
class Chair { |
|
public decimal ABigNum { get { return 123456.1122351M; } } |
|
public string Back { get { return "straight"; } } |
|
public int[] Legs { get { return new[] { 1, 2, 3, 4 }; } } |
|
public override string ToString() { return "a chair"; } |
|
} |