返回 func<> 委托的具体实现的名称

Returning name of the concrete implementation of a func<> delegate

tl;dr 版本:nameof(ToCelsius) returns ToCelsius。不过,我想要 returns 底层函数名称 ToCelsiusByA 的东西。

我的 ToCelsius 被分配了一个具体的实现:

 Func<decimal,decimal> ToCelsius = ToCelsiusByA;

然后我调用 ToCelsius 函数:

var degreesC = ToCelsius(degreesF);

我想返回已实现函数的名称 (ToCelsiusByA),所以我正在尝试这样做:

Console.WriteLine(degreesF + " degrees F is " + degreesC + " degrees C! using " + nameof(ToCelsius));

但是,当然,这会在字符串中显示 'ToCelsuis'。

Console.WriteLine(theDelegate.Method.Name);

但请注意:这不适用于涉及委托的一系列场景,例如组合委托或 lambdas / 匿名方法。