4

Unityアプリケーションブロックを使用する際の予期しない動作を理解しています。スタートアッププロジェクトとしてプロジェクトAがあります。

プロジェクトAにはプロジェクトBへのプロジェクト参照があり、プロジェクトBにはプロジェクトCへのプロジェクト参照があります。

プロジェクトAは、Unityを使用して、プロジェクトBで定義されたクラスへの参照を解決します。これらのクラスは、Unityを使用して、プロジェクトCのクラスへの依存関係を解決します。

したがって、私は共通のプロジェクトで定義されたインターフェイスのみを使用し、Unityを使用して具体的な参照を解決しているため、プロジェクトAのプロジェクトBまたはプロジェクトCのプロジェクト/アセンブリ参照を追加する必要はありません

ただし、その場合、Unityは参照を解決できません。一方、両方のプロジェクトの参照を追加した場合、問題はありません。なぜそれが必要なのですか?これを回避する方法はありますか?

これは、Unityがこれらのアセンブリから型を構築するために、dllがコンテキスト内にあり、ロードされる必要があるためですか?どういうわけか、これは正しく感じられません。誰かがこの行動を理解するのを手伝ってくれませんか。

4

2 に答える 2

3

コードに依存関係を登録する場合は、これらの依存関係(インターフェイスまたは具象クラス)が定義されているアセンブリを参照する必要があります。XMLでマッピングを定義する場合、参照は必要ありませんが、Unityが実行時にアセンブリを見つけられることを確認する必要があります。したがって、それらをGACまたはアプリケーションフォルダに配置する必要があります。

于 2012-06-07T15:13:51.663 に答える
1

Unityアセンブリのコードは、登録した具象クラスを解決できる必要があります。これは、具象クラスが存在するアセンブリにアクセスできる必要があることを意味します-Unityアセンブリと同じ出力ディレクトリにあるかGACにあるかにかかわらず-Unityはそれらを見つけることができる必要があります。

于 2012-06-07T13:34:34.093 に答える