Любой способ добавить некоторые сборки по умолчанию для разрешения типов в Unity / ObjectBuilder? - PullRequest
0 голосов
/ 21 октября 2008

Я работаю над своим первым проектом, используя MS Unity IoC Framework.

Если у меня есть это в моей конфигурации единства:

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

Тогда я получаю ошибку:

Не удалось загрузить тип 'PFServer.DataAccess.TestDataAccess' из сборки «Microsoft.Practices.Unity.Configuration, Версия = 1.1.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' .

Однако, если я добавлю имя сборки в определение типа:

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

Тогда все работает нормально. Есть ли способ добавить какой-то набор сборок по умолчанию для загрузки типов из? В этом случае странным является то, что PFServer.dll - это сборка, которая в любом случае содержит всю эту конфигурацию. Я нахожу странным, что текущая сборка не в пути для разрешения объектов ... Или я просто делаю что-то не так?

1 Ответ

2 голосов
/ 22 октября 2008

Unity разрешает строки в объекты Type, вызывая статический метод Type.GetType (string), который ожидает аргумент, который является AssemblyQualifiedName . Вызов GetType выполняется в сборке Microsoft.Practices.Unity.Configuration, которая не знает о вашей сборке PFServer, поэтому для нее требуется имя сборки в строке.

Я думаю, псевдонимы типов могут вам помочь. Вот пример.

<unity>
    <typeAliases>
        <typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" />
        ...
    </typeAliases>

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