我正在尝试解析动态加载的程序集,但 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
方法中定义的变量。我可以使用一种解决方法,但我仍然不明白为什么匿名函数不起作用。