4

我正在弄清楚使用 Unity 应用程序块时的意外行为。我有项目 A 作为我的启动项目。

项目 A 具有对项目 B 的项目引用,而项目 B 具有对项目 C 的项目引用。

项目 A 使用 unity 来解析对项目 B 中定义的类的引用。这些类反过来使用 Unity 来解析对项目 C 中类的依赖关系的引用。

因此,由于我只使用在通用项目中定义的接口并使用 Unity 解析具体引用,因此无需在 Project A 中为 Project B 或 Project C 添加项目/程序集引用

但在这种情况下,Unity 无法解析引用。另一方面,如果我为这两个项目添加了引用,则没有问题。为什么有必要?有没有办法解决?

这是因为 Unity 需要在上下文中加载 dll 才能从这些程序集中构造类型?不知怎的,这感觉不对。任何人都可以帮助我理解这种行为。

4

2 回答 2

3

如果您在代码中注册依赖项,则需要引用定义这些依赖项(无论是接口还是具体类)的程序集。如果您在 XML 中定义映射,则不需要引用,但您必须确保 Unity 可以在运行时定位程序集。因此,您需要将它们放在 GAC 或应用程序文件夹中。

于 2012-06-07T15:13:51.663 回答
1

Unity 程序集中的代码需要能够解析您注册的具体类。这意味着它需要能够访问具体类所在的程序集——无论它们在与 Unity 程序集相同的输出目录中,还是在 GAC 中——统一需要能够找到它们。

于 2012-06-07T13:34:34.093 回答