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

时间:2016-06-27 10:22:12

标签: c# nlog method-parameters swallowed-exceptions

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

除了传递代表之外还有其他方式吗?

1 个答案:

答案 0 :(得分:1)

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