-1

有一个代码:

    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 语句方法成功返回并且没有循环时。这似乎是装配解决问题。

4

1 回答 1

2

我可以看到您的代码没有任何问题,因此无限循环一定是由其他原因引起的。

除此之外,最好只使用

// no need for try/catch
return Plugins.Keys.FirstOrDefault(x => x.FullName == args.Name);
于 2012-04-25T11:18:44.360 回答