-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 に答える