// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
using System;
namespace GFramework.Cqrs.Benchmarks;
///
/// 为 CQRS benchmark 结果补充可读的场景标签列。
///
/// 列名。
/// 从 benchmark case 提取列值的委托。
public sealed class CustomColumn(string columnName, Func getValue) : IColumn
{
///
public string Id => $"{nameof(CustomColumn)}.{ColumnName}";
///
public string ColumnName { get; } = columnName;
///
public bool AlwaysShow => true;
///
public ColumnCategory Category => ColumnCategory.Params;
///
public int PriorityInCategory => 0;
///
public bool IsNumeric => false;
///
public UnitType UnitType => UnitType.Dimensionless;
///
public string Legend => $"Custom '{ColumnName}' tag column";
///
public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase)
{
return false;
}
///
public bool IsAvailable(Summary summary)
{
return true;
}
///
public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
{
return getValue(summary, benchmarkCase);
}
///
public string GetValue(Summary summary, BenchmarkCase benchmarkCase, SummaryStyle style)
{
return GetValue(summary, benchmarkCase);
}
///
public override string ToString()
{
return ColumnName;
}
}