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

StackOverflow https://stackoverflow.com/questions/222102

Вопрос

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

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

  <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 " это сборка, которая содержит всю эту конфигурацию в любом случае. Я нахожу странным, что текущая сборка не в пути для разрешения объектов ... Или я просто что-то делаю не так?

Это было полезно?

Решение

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" />
            ...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top