Ввести в атрибут? - PullRequest
       26

Ввести в атрибут?

1 голос
/ 17 декабря 2009

У меня есть атрибут [Logger] для моих проектов asp.net-mvc. Этот LoggerAttribute принимает ILoggerService в своем конструкторе.

Для обычных объектов (например, моих контроллеров) это работает, но атрибуты, похоже, не разрешаются.

Как я могу сделать так, чтобы Турбина впрыскивала ILoggerService?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2009

Аргументы атрибута должны быть константными выражениями, поэтому вы не можете создать экземпляр объекта, который будет передан атрибуту.

http://msdn.microsoft.com/en-us/library/5y0xyec6.aspx

Что бы я сделал, это попросил бы ваш контроллер принять ILoggerServer в своем конструкторе и сделать так, чтобы Turbine вводил в конструктор вашего контроллера.

2 голосов
/ 20 декабря 2009

Является ли ваш атрибут Logger фильтром действия | результата | ошибки | авторизации? Если это так, вы можете использовать класс InjectableFilterAttribute , чтобы указать тип фильтра, который вы хотите использовать для Turbine. Таким образом, вы можете поддерживать инъекцию ctor в ваши службы.

Чтобы увидеть, как это делается, посмотрите образец впрыска фильтра , который поставляется с турбиной.

...