给定一个加载的Assembly
有没有办法(在代码中)确定它被加载到 3 个加载上下文中的哪一个(默认Load, 加载自, or Neither)?
In 苏珊·库克的“选择一个有约束力的上下文” https://web.archive.org/web/20190124235454/https://blogs.msdn.microsoft.com/suzcook/2003/05/29/choosing-a-binding-context/文章中,将程序集加载到LoadFrom。特别是,我的库使用反序列化并遇到InvalidCastException
当加载到LoadFrom语境。
目前我的库失败得很晚(当它执行有问题的反序列化代码时失败 - 请参阅我的例子 https://stackoverflow.com/questions/23255892/how-to-reproduce-invalidcastexception-when-binding-to-an-assembly-in-the-loadfro)。我希望通过检测它加载到的上下文并在未加载到默认值时抛出异常,使其在这些情况下更早失败Load语境。
您可以测试它的行为,而不是识别程序集的上下文。例如,对于序列化,序列化程序将调用 Assembly.Load 并且该程序集必须match被序列化的对象的集合。可以通过检查代码库来测试匹配。
private static bool DoesAssemblyMatchLoad(Assembly assemblyToTest)
{
try
{
var loadedAssembly = Assembly.Load(assemblyToTest.FullName);
return assemblyToTest.CodeBase == loadedAssembly.CodeBase;
}
catch (FileNotFoundException)
{
return false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)