У меня есть следующая структура проекта, в моем решении:Обращение с Зависимость от от другого проекта в консольном приложении
Project.Repository (библиотека классов)
Project.Core (библиотека классов)
проекта .Web (MVC5 веб-передний конец)
Project.Scheduler (Console Application)
Я использую Unity для обработки моего DI.
Моя проблема
У меня есть метод, который сидит в базовом слое, этот метод имеет зависимость в IProcessDataService
интерфейс, который обрабатывается в моей Unity конфигурации.
//Service
container.RegisterType<IProcessDataService, ProcessDataService>(new PerRequestLifetimeManager());
Я недавно создал свой проект консольного приложения, который будет в основном ссылаться на указанный метод и будет выполняться по расписанию окна.
Как мне получить доступ к этому методу из статического основного метода Консольного приложения, учитывая, что у меня есть зависимость от моего основного интерфейса? Основной метод
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Begin Automation Process");
//Run method from Core layer which has a dependency on IProcessDataService
}
}
Сначала вам нужно будет инициализировать новый контейнер Unity и зарегистрировать свои сопоставления. Затем вам придется использовать шаблон локатора службы для разрешения зависимостей IProcessDataService. http://stackoverflow.com/questions/22961463/how-can-i-set-up-unity-3-to-work-in-a-console-application –
, пожалуйста, не используйте шаблон локатора службы. Просто подключите свой контейнер, чтобы создать граф объектов и получить корневой объект и начать с него. –
@SamHolder, но он не сможет вложить любую зависимость в статический Основной метод? Если вы используете container.Resolve, это в основном локатор сервисов. –