3

我需要使用 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 );

不幸的是,没有为第 2 次 ( Swallow<T>(Func<T>)) 和第 3 次 ( Swallow<T>(Func<T>, T)) 重载提供示例,在这两种情况下,都通过参数传递方法引用。

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

我自己试过:

`Object.TypeOf()` 

var t = typeof(MyMethod);

它们在语法上都不正确。

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

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

4

1 回答 1

2

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

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

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

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

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

还有这个:

private string SomeMethod(string arg1); // Func<T, T>
于 2016-06-27T10:24:11.770 回答