Здравствуйте, Философ, Вы писали:
Ф>Здравствуйте, namespace, Вы писали:
Ф>>>студия тоже выдаёт предупреждение — это ничего не значит. Ф>>>каков "верный код"? N>>В VS 2010 выдает "<>n__FabricatedMethod1", при компиляции никаких предупреждений.
Ф>похоже на баг компилятора
А если поменять base на this?
Тут все понятно на самом деле, любая лямда — это сгенерированный компилятором класс с полями из захваченных переменных и методом с телом лямды.
Для досткпаю к this сгенерированный класс просто захватывает переменную this. Для base он так поступить не может, потому что ToString виртуальный метод. Т.е. захват для base не работает и компилятор не зря по этому поводу ругается.
Я в таких случаях создаю отдельный метод который стучится к base.
В общем нужно в ILDasm запускать и смотреть куда добавился сгенерированный метод FactoryMethod.
У меня компа под рукой нет, кто может заглянуть?