mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-17 01:12:50 +08:00
46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
using SystemConsole = System.Console;
|
|
|
|
namespace Spectre.Console.Tests.Data;
|
|
|
|
public abstract class AnimalCommand<TSettings> : Command<TSettings>
|
|
where TSettings : CommandSettings
|
|
{
|
|
protected void DumpSettings(CommandContext context, TSettings settings)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (settings == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(settings));
|
|
}
|
|
|
|
var properties = settings.GetType().GetProperties();
|
|
foreach (var group in properties.GroupBy(x => x.DeclaringType).Reverse())
|
|
{
|
|
SystemConsole.WriteLine();
|
|
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
|
|
SystemConsole.WriteLine(group.Key.FullName);
|
|
SystemConsole.ResetColor();
|
|
|
|
foreach (var property in group)
|
|
{
|
|
SystemConsole.WriteLine($" {property.Name} = {property.GetValue(settings)}");
|
|
}
|
|
}
|
|
|
|
if (context.Remaining.Raw.Count > 0)
|
|
{
|
|
SystemConsole.WriteLine();
|
|
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
|
|
SystemConsole.WriteLine("Remaining:");
|
|
SystemConsole.ResetColor();
|
|
SystemConsole.WriteLine(string.Join(", ", context.Remaining));
|
|
}
|
|
|
|
SystemConsole.WriteLine();
|
|
}
|
|
}
|