c# - 创建具有动态操作参数的方法

标签 c#

嗨,有没有办法创建一个接受任何类型方法的方法?我的意思是它有任何类型的参数或它有多少参数

void SampleMethod(Action<dynamic> Action)
{
}

我目前正在这样做,但我认为我做错了,有没有办法做到这一点?无论是有参数还是多参数还是无参数。

我是做错了什么还是错过了什么?

我试过这段代码

void SampleMethod(Action Action)
{
}

但是好像只接受没有参数的方法 我做错了吗?

最佳答案

我认为Delegate正是您要找的。

static void A1() {
  Console.Out.WriteLine("A1");
}

static void A2(int foo) {
  Console.Out.WriteLine("A2");
}

static void SampleMethod(Delegate dlgt) {
}

用法:

SampleMethod(new Action(A1));
SampleMethod(new Action<int>(A2));

您可以通过DynamicInvoke调用该方法(),但是您必须提供确切的参数列表。

static void SampleMethod(Delegate dlgt) {
  // ok for A1, will throw an exception for A2
  dlgt.DynamicInvoke(null);
}

关于c# - 创建具有动态操作参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663186/

相关文章:

c# - 在不破坏不变性的情况下更改属性值

c# - 排序文件数组以重命名

c# - 继承其泛型类型的泛型类

c# - 如何获取mvc3 Controller 中json数组中的值?

c# - Azure Web 表单和 HTML 到 PDF 转换器

javascript - 如何在 Angular 8 项目中为 SignalR 配置重新连接逻辑?

c# - Asp.net 初学者

c# - 使属性在 DataGridView 中可见但在 PropertyGrid 中不可见?

c# - 如何使用 C# 使用可以在图层模型中更改的参数从数据库中获取特定字符串

c# - 将 Linq 查询表达式转换为点符号