Unity DI в службе Windows, возможно ли?C#

Место общения программистов C#
Anonymous
Unity DI в службе Windows, возможно ли?

Сообщение Anonymous »

Я разрабатываю службу Windows для выполнения некоторых периодических операций. Могу ли я использовать Unity для внедрения туда своих классов из другой библиотеки?

Я хочу использовать с [ Dependency] в моих службах, регистрируя компоненты в точке входа при запуске службы Windows.

Пример:

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

static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
UnityConfig.RegisterComponents();
ServicesToRun = new ServiceBase[]
{
new EventChecker()
};
ServiceBase.Run(ServicesToRun);
}
}

public static class UnityConfig
{
public static void RegisterComponents()
{
UnityContainer container = new UnityContainer();
container.RegisterType();
}
}

public partial class EventChecker : ServiceBase
{
private Logger LOG = LogManager.GetCurrentClassLogger();

[Dependency]
public Lazy EventBL { get; set; }

protected override void OnStart(string[] args)
{
var events = EventBL.Value.PendingExecution(1);
}
}
В этом сценарии EventBL всегда имеет значение null, поэтому не разрешается с помощью [Dependency] единства. Нет способа заставить это работать?

Спасибо!



Решение найдено:

После того, как я написал ответ, я нашел возможное решение, вызвав метод создания контейнера для создания класса обслуживания: р>

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

    UnityContainer container = new UnityContainer();
UnityConfig.RegisterComponents(container);

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
container.BuildUp(new EventChecker())
};
ServiceBase.Run(ServicesToRun);
Если вы знаете какое-либо другое решение, поделитесь им :)

Подробнее здесь: https://stackoverflow.com/questions/251 ... s-possible

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