如何在 C# 中将对 STATIC 方法的引用作为函数参数传递?

How to pass a reference to a STATIC method as a function parameter in C#?

我需要使用 NLog 库中的 Swallow(Func) 方法。 重要说明:我从静态方法调用 Swallow 并希望传递静态方法。

它的文档在这里:

http://nlog-project.org/documentation/v3.2.1/html/Overload_NLog_Logger_Swallow.htm

第一种情况(Swallow(Action))(传递静态方法 WO 参数)工作简单:

static void ParameterlessMethodThatCasts ()
{
   throw NotImplementedException("Not implemented yet");
}

...
// Code in some method that uses static instance of nLog
nLog.Instance.Swallow( ParameterlessMethodThatCasts );

不幸的是,没有为第二个 (Swallow<T>(Func<T>)) 和第三个 (Swallow<T>(Func<T>, T)) 重载提供示例,这两种情况都传递了带有参数的方法引用。

我在其他地方也没有找到合适的例子。

我自己试过:

`Object.TypeOf()` 

var t = typeof(MyMethod);

它们在语法上都不正确。

我应该在这里使用什么语法来将 ref 传递给带参数的方法 (即上面 link 中的第二个和第三个重载。) ?

除了通过委托还有其他方法吗?

如果愿意,您可以传入 Func<T>Func<T, T>,但也许传入匿名 lambda 表达式更适合您:

() => this.ParameterlessMethodThatCasts("A", "B", 1, 2)

由于此签名与第一个重载相匹配,您可以传入任何您想要的参数。

Func<T>Func<T, T> 将匹配这样的方法(在这种情况下 Tstring):

private string SomeMethod(); // Func<T>

还有这个:

private string SomeMethod(string arg1); // Func<T, T>