如何在 C# 中将对 STATIC 方法的引用作为函数参数传递?
How to pass a reference to a STATIC method as a function parameter in C#?
我需要使用 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 传递给带参数的方法
(即上面 link 中的第二个和第三个重载。) ?
除了通过委托还有其他方法吗?
如果愿意,您可以传入 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>
我需要使用 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 传递给带参数的方法 (即上面 link 中的第二个和第三个重载。) ?
除了通过委托还有其他方法吗?
如果愿意,您可以传入 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>