如何引用没有公共类型的程序集?

时间:2017-04-19 11:18:55

标签: c# .net reflection .net-assembly mef

我正在编写一个应用程序,它使用一些设置代码来建立数据库连接和各种上下文设置。我无法访问该设置代码的来源。

在许多其他方面,该设置代码使用MEF来实例化实现公共接口的某个类。如果找不到这样的类,将抛出异常。

不幸的是,实现该接口的唯一类 C 是程序集 A 中的internal类。程序集 A 不包含任何公共类型(以及我无法访问的源代码)。但是,只有使用其内容的程序集才会被CLR加载,而且,虽然我可以使用Assembly.Load触发加载,但是如果某些程序集的使用是,我只能从Assembly.GetReferencedAssemblies获取引用的程序集名称。实际上由编译器识别 - otherwise, the reference will be optimized away

在运行时,我不知道 A 的物理位置,这会使文件名的动态加载出现问题。通过查看某些其他装配的位置,我或许可以猜测它,但这对我来说似乎很骇人听闻。

此外,我无法自己实现界面(或者更确切地说,这样做没有任何意义),因为我没有必须通过某些界面方法返回的信息。 (事实上​​,由于我没有任何关于界面的文档,我甚至不确定界面成员应该做什么或在某些情况下返回。)

当设置代码尝试检索接口实现时,我需要选择哪些选项来确保 C

0 个答案:

没有答案