Регистратор зависимости для другой сборкиC#

Место общения программистов C#
Ответить
Anonymous
 Регистратор зависимости для другой сборки

Сообщение Anonymous »

У меня есть простой вопрос о регистрации зависимостей. Для любой библиотеки в решении у меня есть один класс, реализующий idependencyregistrar , в которой реализуют общий метод регистра , который добавил один контейнер. их в контейнере Autofac. < /p>
Код, который обеспечивает такое поведение: < /p>

Код: Выделить всё

 builder = new ContainerBuilder();
var drTypes = typeFinder.FindClassesOfType();
var drInstances = new List();
foreach (var drType in drTypes)
drInstances.Add((IDependencyRegistrar) Activator.CreateInstance(drType));
//sort
drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
foreach (var dependencyRegistrar in drInstances)
dependencyRegistrar.Register(builder, typeFinder, config);
builder.Update(container);
Где findclassoftype работает благодаря реализации метода подобной:

Код: Выделить всё

        public virtual IList GetAssemblies()
{
var addedAssemblyNames = new List();
var assemblies = new List();

if (LoadAppDomainAssemblies)
AddAssembliesInAppDomain(addedAssemblyNames, assemblies);
AddConfiguredAssemblies(addedAssemblyNames, assemblies);

return assemblies;
}
и, addassemblyinappdomain :

Код: Выделить всё

private void AddAssembliesInAppDomain(List addedAssemblyNames, List assemblies)
{
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (Matches(assembly.FullName))
{
if (!addedAssemblyNames.Contains(assembly.FullName))
{
assemblies.Add(assembly);
addedAssemblyNames.Add(assembly.FullName);
}
}
}
}
Проблема состоит в том, что: Когда я в конечном итоге добавляю в MySolution проект MVC (фронт-конечный), я ссылался на него только в библиотеке с прямым доступом (сервисный уровень и некоторые компоненты инфраструктуры), но нет компонентов DataLayer и некоторые другие DLL. В связи с тем, что MVC не ссылается непосредственно на некоторые библиотеки глубоких слоев, мой контекст двигателя не видит другие подкомпоненты и не регистрируя их в контейнере AutoFac, что приводит к < /p>

'Нет зарегистрированных услуг' < /p>
< /blockquote>
, когда вы выполняете, вызывает у меня есть явное. /> Вся система работает просто, если я добавляю ссылку на любую библиотеку из проекта MVC, но для слоистого архитектурированного приложения это не является наилучшей практикой: мой MVC не должен знать ничего о DataLayer или других услугах с низким уровнем. без ссылки на все сборки непосредственно из основного проекта MVC?

Подробнее здесь: https://stackoverflow.com/questions/358 ... r-assembly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»