0

MS Unity IoC フレームワークを使用して、最初のプロジェクトに取り組んでいます。

私のユニティ構成にこれがある場合:

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess" />

次に、エラーが発生します。

アセンブリ 'Microsoft.Practices.Unity.Configuration、Version=1.1.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35' から型 'PFServer.DataAccess.TestDataAccess' を読み込めませんでした。

ただし、アセンブリ名を型定義に追加すると、次のようになります。

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess, PFServer" />

その後、正常に動作します。型をロードするアセンブリの既定のセットを追加する方法はありますか? この場合の奇妙な点は、"PFServer.dll" がこのすべての構成を含むアセンブリであることです。現在のアセンブリがオブジェクトを解決するパスにないのは奇妙だと思います...または、何か間違っているのでしょうか?

4

1 に答える 1

2

Unityは、 AssemblyQualifiedNameである引数を期待する静的メソッドType.GetType(string)を呼び出すことにより、文字列をTypeオブジェクトに解決します。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" />
            ...
于 2008-10-22T11:44:36.900 に答える