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
Ответить

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

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

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

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

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