Unity / ObjectBuilderでタイプを解決するためにデフォルトのアセンブリを追加する方法はありますか?
-
03-07-2019 - |
質問
MS Unity IoCフレームワークを使用して最初のプロジェクトに取り組んでいます。
ユニティ構成にこれがある場合:
<container name="TestBusiness">
<types>
<type type="PFServer.DataAccess.TestDataAccess" />
次にエラーが表示されます:
タイプをロードできませんでした 「PFServer.DataAccess.TestDataAccess」 アセンブリから 'Microsoft.Practices.Unity.Configuration、 バージョン= 1.1.0.0、Culture = neutral、 PublicKeyToken = 31bf3856ad364e35 '。
ただし、アセンブリ名を型定義に追加すると:
<container name="TestBusiness">
<types>
<type type="PFServer.DataAccess.TestDataAccess, PFServer" />
その後、正常に動作します。ロードタイプにアセンブリのデフォルトセットを追加する方法はありますか?この場合の奇妙なことは、&quot; PFServer.dll&quot;とにかく、このすべての構成を含むアセンブリです。現在のアセンブリがオブジェクトを解決するためのパスにないのは奇妙に思えます...または、何か間違ったことをしているだけですか?
解決
Unityは、 AssemblyQualifiedName 。 GetTypeの呼び出しは、PFServerアセンブリを知らないMicrosoft.Practices.Unity.Configurationアセンブリで行われるため、文字列にアセンブリ名が必要です。
型エイリアスが役立つと思います。以下に例を示します。
<unity>
<typeAliases>
<typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" />
...
</typeAliases>
<containers>
<container name="TestBusiness">
<types>
<type type="TestDataAccess" />
...
所属していません StackOverflow