如何获取作为函数参数传递的方法名称
本文关键字:参数传递 函数 方法 何获取 获取 | 更新日期: 2023-09-27 18:24:06
我在这里发现了一个类似的问题如何找到调用当前方法的方法?但这个问题的答案也给出了与我在第一个例子中提到的相同的结果
这是我使用的方法
public class iStore
{
public T GetSiteCacheValueByFunc<T>(Func<T> func) where T : class
{
var methodName = func.Method.Name;
}
}
在这里,我使用以下代码使用iStore.GetSiteCacheValueByFunc
,我得到methodName <Index>b_2
,而我应该得到GetAllLanguages
public ActionResult Index()
{
var site = BusinessLogic.Caching.iStore;
var languages = site.GetSiteCacheValueByFunc<IEnumerable<Language>>(() => LanguageManager.GetAllLanguages());
}
如果我使用以下代码,我会得到正确的methodName GetAllLanguages
,但这样我就无法将参数传递给GetAllLanguages方法
public ActionResult Index()
{
var site = BusinessLogic.Caching.iStore;
var languages = site.GetSiteCacheValueByFunc<IEnumerable<Language>>(LanguageManager.GetAllLanguages);
}
我哪里做错了?以及如何获得正确的methodName?
如果使用.NET 4.5,则可以使用一个属性:CallerMemberNameAttribute
public void MyMethod([CallerMemberName]string myCallerName = null)
{
//use myCallerName
}