如何在c#中将引用作为函数参数传递给STATIC方法



我需要使用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给一个带参数的方法(即上面链接中的第二个和第三个重载)?

如果你愿意,你可以传递一个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>

最新更新