0

我正在尝试解析动态加载的程序集,但 AssemblyResolve 事件似乎不适用于匿名函数。

private void Load() {
    ResolveEventHandler resolve = (sender, args) => Assembly.LoadFile(pathToDependency);

    AppDomain.CurrentDomain.AssemblyResolve += resolve;
    AppDomain.CurrentDomain.AssemblyResolve += this._AssemblyResolve;
    Assembly.LoadFile(pathToDll);
}

private void _AssemblyResolve(Object sender, ResolveEventArgs args) {
    return Assembly.LoadFile(pathToDependency);
}

this._AssemblyResolve并且resolve实际上是相同的函数,除了匿名resolve函数创建一个使用Load方法中定义的变量的闭包。

出于某种原因,this._AssemblyResolve被调用,但resolve没有。为什么?

我不能真正依赖该_AssemblyResolve方法,因为该方法需要了解该Load方法中定义的变量。我可以使用一种解决方法,但我仍然不明白为什么匿名函数不起作用。

4

0 回答 0