我需要使用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传递给带参数的方法 (即上面链接中的第二次和第三次重载。)?
除了传递代表之外还有其他方式吗?
答案 0 :(得分:1)
如果愿意,你可以传入Func<T>
或Func<T, T>
,但也许你更适合传递一个匿名的lambda表达式:
() => this.ParameterlessMethodThatCasts("A", "B", 1, 2)
由于此签名与第一个重载匹配,因此您可以传入任何所需的参数。
Func<T>
和Func<T, T>
会匹配这样的方法(在这种情况下T
为string
):
private string SomeMethod(); // Func<T>
而且:
private string SomeMethod(string arg1); // Func<T, T>