C# BenchmarkDotNet-如何从类外部注入参数

C# BenchmarkDotNet-如何从类外部注入参数,c#,benchmarkdotnet,C#,Benchmarkdotnet,我正在使用库进行性能检查,我想注入 使用基准类时的参数。大概是这样的: public class Program { public static void Main() { var benchmark1 = new BenchmarkWithParameter(100); BenchmarkRunner.Run(benchmark1); var benchmark2 = new BenchmarkWithParameter(200

我正在使用库进行性能检查,我想注入 使用基准类时的参数。大概是这样的:

public class Program
{
    public static void Main()
    {
        var benchmark1 = new BenchmarkWithParameter(100);
        BenchmarkRunner.Run(benchmark1);

        var benchmark2 = new BenchmarkWithParameter(200);
        BenchmarkRunner.Run(benchmark2);
    }
}

public class BenchmarkWithParameter
{
    public BenchmarkWithParameter(int waitTime)
    {
        WaitTime = waitTime;
    }

    public int WaitTime { get; }

    [Benchmark]
    public void Run()
    {
        Thread.Sleep(WaitTime);
    }
}
有没有办法做到这一点

我知道我可以使用
Params
ParamsSource
ArgumentsSource
属性,但这意味着我需要为每个参数更改更改基准类,而不是注入不同的参数


我的主要目标是编写一次基准类,并使用不同的参数多次使用它。

很抱歉,但到今天为止,这是不可能的

库的设计受到以下事实的限制:为了避免以前执行的基准的副作用,我们在一个独立的过程中运行每个基准。为了做到这一点,我们为每个基准生成并编译一个新项目。编译限制了我们提供参数/参数的已知方式


此处介绍了所有可用选项:

如何使用
setter
更改参数?考虑到runner只在类似
BenchmarkRunner.Run()的类型上运行不是很优雅,但目前我将参数写入一个文本文件,然后在
GlobalSetup
中读取它们,在那里我需要它们来实例化一个类。在我的例子中,参数是在命令行中指定的。