Передача данных экземпляра объекта в атрибут

Я хотел бы передать определенные данные из экземпляра объекта его атрибуту, и у меня возникли проблемы с пониманием того, как его реализовать. Вот пример:

[AuthenticateAttribute]
public class MyController: Controller
{
    UserInfo info;
}

Идея в том, что AuthenticateAttribute экземпляр будет заполнять экземпляр UserInfo.

Я хочу передать ссылку на info к примеру AuthenticateAttribute и тем самым устранить сильную связь между атрибутом и частным MyController учебный класс.

Это возможно?

2 ответа

Решение

Сам атрибут не должен иметь UserInfo поле ИМО. Имейте в виду, что будет один экземпляр атрибута для типа, к которому он применяется, а не один на экземпляр этого типа.

Если бы вы могли привести более полный пример (показывающий код, к которому он применяется), мы могли бы помочь больше...

Коллекция ViewData контроллера доступна из атрибута, и вы можете добавить свой объект UserInfo к нему, а затем получить к нему доступ в действиях контроллера. Вы также можете использовать типизированную модель, содержащую UserInfo. Этот сценарий описан здесь. Получить разрешение от Авторизовать Атрибут?

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

Другие вопросы по тегам