如何在c#中将引用作为函数参数传递给STATIC方法
本文关键字:函数 参数传递 方法 STATIC 引用 | 更新日期: 2023-09-27 17:51:23
我需要使用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>
将匹配这样的方法(在这种情况下T
是string
):
private string SomeMethod(); // Func<T>
:
private string SomeMethod(string arg1); // Func<T, T>