c# - 如何创建一个辅助函数来调用作为参数传递的其他函数

标签 c# testing delegates parallel.foreach

我有一个用于压力测试的函数,我想对多个函数进行压力测试。我在这里压力测试的功能是 GetParameters(reportUri, SessionContext);

我如何添加一个辅助函数,我可以在其中传递参数,例如 Action 主体或委托(delegate)(这很好,但我有多个具有不同参数的函数)。它通过动态替换 this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext); 来执行所有步骤。除了上面提到的行,整个函数体将是相同的

public void GetParameters()
{
    for (int i = 0; i < 100; i++)
    {
        Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
        Parallel.For(0, 2, parameterIteration =>
        {
            Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
            string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
            ReportUri reportUri = ReportUri.Create(reportUrl);
            Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
            IList<Parameter> parameters = this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext);
        });
    }
}

如果我不够清楚,请告诉我。我可以根据要求编辑我的问题

最佳答案

如何将方法更改为类似

public void GetParameters(Func<ReportUri, SessionContext, IList<Parameter>> returnStuff)
    {
        for (int i = 0; i < 100; i++)
        {
            Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
            Parallel.For(0, 2, parameterIteration =>
            {
                Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
                string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
                ReportUri reportUri = ReportUri.Create(reportUrl);
                Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
                IList<Parameter> parameters = returnStuff(reportUri, SessionContext);
            });
        }
    }

关于c# - 如何创建一个辅助函数来调用作为参数传递的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693442/

相关文章:

c# - 如何增加局部变量的限制

c# - 从程序集与进程获取当前可执行文件的名称?

maven - 如何在 SpringBoot 应用程序测试上下文中使用来自测试 application.yml 的 spring 数据源设置的参数实例化 groovy.sql.Sql?

c# - 检查委托(delegate)是否是对象的方法,并检索该对象引用和方法名称

c# - 处理后退导航 Windows 10 (UWP)

c# - MS Outlook 2013 删除通过 Exchange Web 服务 API 添加到 MasterCategoryList 的自定义类别

testing - 使用外部服务/api 的代码的 TDD BDD 最佳实践

android - 为什么在扩展 AndroidTestCase 的测试类中,getContext() 是否返回 null?

oop - 通用 OO 设计模式

c# - 如何在运行时提取多播委托(delegate)的结果?