У меня есть этот код:Почему отражение возвращает такое странное имя для лямбды?
class Program
{
static void Main(string[] args)
{
Action whatToDo =() => {
var member = (MemberInfo)(MethodBase.GetCurrentMethod());
Thread.Sleep(0); //whatever, need something to put a breakpoint on
};
whatToDo();
}
}
, когда я запускаю его и использовать часы, чтобы заглянуть внутрь объекта, связанного с member
ссылкой я вижу, что MemberInfo.Name
свойство имеет значение <Main>b__0
.
Это выглядит странно. Почему бы не использовать отражение whatToDo
? Что, если бы у меня было больше одного действия с одной и той же сигнатурой внутри одной функции-члена - как бы я сказал, какой из них сообщается?
Почему такое странное имя возвращается отражением?
Это анонимная функция, что еще вы ожидаете? Это деталь реализации, не зависит от нее. – asawyer
http://stackoverflow.com/questions/4704910/using-methodinfo-getcurrentmethod-in-anonymous-methods – Habib
«Почему бы не использовать отражение имени' whatToDo'? - с суммой репутации, которую вы заработали в [tag: C++], я * знаю * вы знаете разницу между объектными переменными и их значениями :) – AakashM