Любой способ добавить некоторые сборки по умолчанию для разрешения типов в 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, Культура = нейтральная, 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" />
...