我正在编写一个应用程序,它使用一些设置代码来建立数据库连接和各种上下文设置。我无法访问该设置代码的来源。
在许多其他方面,该设置代码使用MEF来实例化实现公共接口的某个类。如果找不到这样的类,将抛出异常。
不幸的是,实现该接口的唯一类 C 是程序集 A 中的internal
类。程序集 A 不包含任何公共类型(以及我无法访问的源代码)。但是,只有使用其内容的程序集才会被CLR加载,而且,虽然我可以使用Assembly.Load
触发加载,但是如果某些程序集的使用是,我只能从Assembly.GetReferencedAssemblies
获取引用的程序集名称。实际上由编译器识别 - otherwise, the reference will be optimized away。
在运行时,我不知道 A 的物理位置,这会使文件名的动态加载出现问题。通过查看某些其他装配的位置,我或许可以猜测它,但这对我来说似乎很骇人听闻。
此外,我无法自己实现界面(或者更确切地说,这样做没有任何意义),因为我没有必须通过某些界面方法返回的信息。 (事实上,由于我没有任何关于界面的文档,我甚至不确定界面成员应该做什么或在某些情况下返回。)
当设置代码尝试检索接口实现时,我需要选择哪些选项来确保 C ?