Существует код:Странное поведение лямбда-выражения C#
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
try
{
//TODO: this lambda-expression starts infinite loop
return Plugins.Keys.First(x => x.FullName == args.Name);
/* this code works fine
foreach (Assembly xx in Plugins.Keys)
if (xx.FullName == args.Name) return xx;
return null;
*/
}
catch
{
return null;
}
}
Что происходит? Или может быть, это я в конце рабочего дня? :)
EDIT: В коде отсутствуют исключения. Я запустил отладчик и после вернул плагины.Keys.First (x => x.FullName == args.Name); метод запускался снова и снова с помощью args.Name = "System.Core.resources bla bla bla". Когда я использовал метод foreach, метод успешно вернулся и не было цикла. Кажется, проблема разрешения сборки.
'вернуть Plugins.Keys.Where (х => x.FullName == args.Name) .Первый(); ' –
Какое исключение вы получаете? –
Как вы заключаете, что это бесконечный цикл? – daryal