有一个代码:
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;
}
}
发生了什么事?或者可能是在工作日结束时的我? :)
修改 代码中没有例外。我运行调试器并在返回Plugins.Keys.First(x => x.FullName == args.Name); 方法一次又一次地启动args.Name =“System.Core.resources bla bla bla“。 当我使用foreach语句方法成功返回并且没有循环时。这似乎是集会解决问题。
答案 0 :(得分:2)
我可以看到你的代码没有任何问题,所以无限循环必须由其他东西引起。
除此之外,最好只使用
// no need for try/catch
return Plugins.Keys.FirstOrDefault(x => x.FullName == args.Name);