c# - 在 C# 中确定对象 o 是 Action<...> 还是 Func<....>

标签 c# reflection metaprogramming

假设您有一个字典 。它可能包含小数、字符串或其他有效类型。它还可以包含 Actions 和 Funcs,例如:

Action<string> or Action<int,int,string> etc.

是否有一种通用的方法来发现给定的键 k 指向一个 Action 或 Func 然后调用相同的值?

var value = dict[key];
//some sort of predicate checking if value is invokeable

我考虑过使用 dynamic 关键字并简单地在结果对象上调用 Invoke( args ),但这看起来很慢而且不够优雅。

最佳答案

你可以测试它是一个委托(delegate):

Delegate d = value as Delegate;
if(d != null) d.DynamicInvoke(args);

但是!如果您不知道调用前的签名,那么知道要提供什么参数(在对象数组中)是很棘手的。

关于c# - 在 C# 中确定对象 o 是 Action<...> 还是 Func<....>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7855947/

相关文章:

metaprogramming - 出于合法目的使用多态代码?

c# - 从非子布局动态地将 EditText 添加到另一个 LinearLayout

scala - 像 $read 和 $iw 这样的奇怪名称在具体化表达式中做了什么?

c# - 如何从封闭类型的 MethodInfo 获取开放泛型类型的 MethodInfo

c++ - 从 MSVC14 切换到 MSVC16 导致 "compiler is out of heap space (C1060)"错误

ruby - 写两个相似的方法——一个有 bang,一个没有——同时尊重 DRY 概念

c# - 如何在众多网站中共享通用功能?

c# - 如何在 ASP.NET 应用程序中使用 Graphviz?

c# - 在 O(n) 时间内创建链表的拷贝

c# - 查找使用参数类型的方法,其中参数是通用的