Я пишу открытый метод в C #, который выполняет определенные проверки неработоспособности (по соображениям безопасности).
public bool CheckThing(int a, int b, bool secureCheck = true)
{
if (secureCheck)
{
// do this thing slowly but safely
}
else
{
// do this as fast as possible
}
// ...
}
Иногда может оказаться ненужным делать что-то «медленным» способом, и я хотел бы позволить людям в моей команде, которые знают, что они делают, установить значение secureCheck
на false
.
Я бы хотел, чтобы этот метод выдавал «предупреждение компилятора» в строке, вызывающей этот метод, всякий раз, когда значение secureCheck
установлено на false
(а не если оно установлено в true). Таким образом, члены команды, которые знают, что они делают, могут подтвердить предупреждение, используя директиву препроцессора #pragma
:
#pragma warning disable InsecureCheckWarning // This call was checked by the team lead and is okay
var result = CheckThing(a, b, secureCheck: false)
#pragma warning restore InsecureCheckWarning
Возможно ли это (возможно, с использованием Roslyn)? Если так, как бы я достиг чего-то подобного?
Для справки, это библиотека .NET Standard 2.0 (и хотя в настоящее время используется C # 7.3, я не против использования C # 8.0 при необходимости).