Разрешение Unity для customTraceListener? - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть пользовательский слушатель трассировки, с простым конструктором;

public MyTraceListener(ISomething something)
{
_something = something;
}

Это подключено к моему веб-приложению через system.diagnostics в web.config. Как мне получить единство, чтобы решить эту проблему? Нужно ли как-то редактировать мой web.config? Если я добавлю конструктор по умолчанию, который запускается, будет ли правильным подход иметь конструктор по умолчанию, который будет выполнять какое-то решение сам по себе?

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

К сожалению, вы застряли.Система трассировки не дает вам возможности заняться созданием объектов, поэтому у Unity нет возможности внедрить конструктор.Система запустит прослушиватель трассировки.

Лучшее, что вы можете сделать, это установить свои зависимости как свойства, а не зависимости конструктора, а затем захватить объект прослушивателя трассировки после его создания и вызвать container.BuildUp onчтобы получить свойства.

0 голосов
/ 14 ноября 2011

Вы зарегистрировали ISomething в Unity в своем коде или в файле web.config?

Что-то вроде

var container = new UnityContainer().RegisterType<ISomething, Something>();

или через конфигурационный файл, как описано [здесь]

Вы звоните в Unity для разрешения вашего пользовательского TraceListener?

var myTraceListener = container.Resolve<MyTraceListener>();

или вы внедряете своего слушателя в какой-то другой класс, где он должен использоваться, чтобы Unity определяла слушателя как параметр?

...