【问题标题】:How can I avoid loading an assembly dynamically that I have already loaded using Reflection?如何避免动态加载我已经使用反射加载的程序集?
【发布时间】:2016-05-31 06:38:23
【问题描述】:

我在循环中使用 Assembly.LoadFile(assemblyFilePath) 加载程序集,如果程序集已经加载一次,我想避免调用 Assembly.LoadFile。我是否应该担心为已加载的 DLL 重复调用 Assembly.LoadFile ?谢谢。

【问题讨论】:

标签: c# .net reflection


【解决方案1】:

不,您不必担心,因为如果程序集已经加载,它将不会再次加载

如果您调用 Assembly.LoadFile(),那么您可以多次加载同一个程序集,但前提是您每次都从不同的路径加载程序集。您可以使用Assembly.Load(),它只会加载一次程序集。您还可以使用

查找当前应用程序域中已加载的程序集
Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies();

【讨论】:

  • 看来,Assembly.LoadFile 在确定程序集是否已加载方面至少与通过 AppDomain.CurrentDomain.GetAssemblies() 手动枚举一样有效(可能更有效)。
【解决方案2】:

对于给定的 AppDomain,您可以调用GetAssemblies 并查看它是否已加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多