Атрибуты .NET расставляют приоритеты для разных целей - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть класс контроллера, который содержит атрибут, который регистрирует системные события.

проблема в том, что некоторые из моих методов в контроллере содержат конфиденциальные данные, которые я не хочу сохранять в журналах (например, пароли).

Я попытался добавить логическое свойство к атрибуту, которое должно сигнализировать мне, если конкретный метод содержит конфиденциальные данные, и вызвать атрибут для цели метода (тот же атрибут, который я использовал для цели класса, только с включенным флагом) но похоже, что атрибут над целью класса - это тот, у кого есть «приоритет», что означает, что мой флаг конфиденциальных данных всегда ложен.

Кто-нибудь знает, как заставить мою цель метода переопределить цель класса при использовании выше определенных методов?

добавить пример кода здесь:

public class SystemEventAtt : Attribute {

public bool ContainsSensitiveData{ get; set; }

***
some additional code which logs stuff..
***

}

[SystemEventAtt]
public class SomeController : Controller {


[Route("someRoute")]
[SystemEventAtt(ContainsSensitiveData = true)]
[HttpPost]

public SomeObj FuncWhichContainsSensitiveData([FromBody] SomeOtherObj obj){

..some code
}

}

1 Ответ

0 голосов
/ 13 ноября 2018

Кто-нибудь знает, как заставить мой метод переопределить цель класса при использовании выше определенных методов?

Если вы хотите использовать только атрибут SystemEventAtt, я думаю, что ответ - нет.

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

Или есть другой способ.

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

public class WriteLogAttribute : Attribute {

}


public class SystemEventAtt : Attribute {

    ***
    some additional code which logs stuff..
    using reflection to get WriteLogAttribute check whether write log
    ***

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...