为了账号安全,请及时绑定邮箱和手机立即绑定

有没有一种方法可以强制将所有引用的程序集加载到应用程序域中?

有没有一种方法可以强制将所有引用的程序集加载到应用程序域中?

C#
忽然笑 2019-10-28 14:24:03
我的项目是这样设置的:项目“定义”项目实施”项目“消费者”项目“消费者”同时引用了“定义”和“实施”,但没有静态引用“实施”中的任何类型。当应用程序启动时,“消费者”项目将在“定义”中调用静态方法,该方法需要在“实施”中查找类型。有没有一种方法可以强制将任何引用的程序集加载到App Domain中,而无需知道路径或名称,最好是不必使用完整的IOC框架?
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您可以使用Assembly.GetReferencedAssemblies获取AssemblyName[],然后分别调用Assembly.Load(AssemblyName)它们。当然,您需要递归-但最好跟踪已加载的程序集:)


查看完整回答
反对 回复 2019-10-28
?
杨魅力

TA贡献1811条经验 获得超5个赞

只是想分享一个递归示例。我在启动例程中这样调用LoadReferencedAssembly方法:


foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())

{

    this.LoadReferencedAssembly(assembly);

}

这是递归方法:


private void LoadReferencedAssembly(Assembly assembly)

{

    foreach (AssemblyName name in assembly.GetReferencedAssemblies())

    {

        if (!AppDomain.CurrentDomain.GetAssemblies().Any(a => a.FullName == name.FullName))

        {

            this.LoadReferencedAssembly(Assembly.Load(name));

        }

    }

}


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 544 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信