c# - 如何将控制器(控制器名称)作为参数传递给另一个方法?
问题描述
所以我想知道是否可以将控制器作为参数发送给另一个方法。我想要完成的是通过采用两个参数(控制器名称和方法名称)来创建一个类似于文件路径构建器的方法。
我在控制器中有一个方法,如下所示:
public async Task GetActiveCountyRegulationByIdSuccess()
{
FilePathBuilder builder = new FilePathBuilder();
builder.FilePath(CountyControllerTest,GetActiveCountyRegulationByIdSuccess);
...
所以我的控制器的名称是 CountyControllerTest,我的方法的名称是 GetActiveCountyRegulationByIdSuccess。我想将这两个参数发送到:
public class FilePathBuilder
{
public string FilePath(object controller, object method)
{
var filePath = "testfiles/" + nameof(controller) + nameof(method) + "Actual.xml";
return filePath;
}
}
并将 FilePath 方法中构建的字符串返回给我的控制器。问题是当我尝试将它作为参数传递时,我的控制器中出现错误。错误消息表明“CountyController”是一种类型,在给定的上下文中无效。
任何答案表示赞赏。
解决方案
您收到此错误是因为您没有传递类实例。您可以做的是更改您的方法,使其接受一个类型,然后您可以从那里获得类名。像这样:
public async Task GetActiveCountyRegulationByIdSuccess()
{
FilePathBuilder builder = new FilePathBuilder();
builder.FilePath(typeof(CountyControllerTest), typeof(GetActiveCountyRegulationByIdSuccess));
...
然后 builder 方法接受 2 个类型参数并使用它们的名称:
public class FilePathBuilder
{
public string FilePath(Type controllerType, Type methodType)
{
var filePath = "testfiles/" + controllerType.Name + methodType.Name + "Actual.xml";
return filePath;
}
}
推荐阅读
- angular - Angular 8:使用 ngRx/store 从 reducer 获取的结果不会以异步方式更新 UI(html)
- cefsharp - 无法在 CefSharp 应用程序中设置表单输入变量
- ios - 适用于 iOS 的 glib 构建
- c# - JSON反序列化后处理空值
- javascript - 如何为 React 应用程序中的不同组件设置不同的背景颜色?
- json - 如何访问 Golang 项目的 JSON 文件中的环境变量?
- javascript - 未捕获的类型错误:无法读取 JS 中未定义错误的属性“数组”
- java - java - 如何将数组更改为字符串,每个名称在java中的单独行上?
- elasticsearch - 如何测量单词或非常短的文本之间的相似度
- c++ - MinGW C++ 和 vscode 漂亮的打印调试不起作用