Диагностика Metalama не сообщается правильноC#

Место общения программистов C#
Anonymous
Диагностика Metalama не сообщается правильно

Сообщение Anonymous »

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

Код: Выделить всё

[AttributeUsage(AttributeTargets.Method)]
public class ExceptionReturnValueAttribute : MethodAspect
{
private static readonly DiagnosticDefinition InvalidReturnType = new("MY1023",
Severity.Error,
"{0}"
);

public override void BuildAspect(IAspectBuilder builder)
{
var isReturnTypeValid = IsReturnTypeValid(builder.Target.ReturnType.ToType());
if (!isReturnTypeValid.IsValid)
{
builder.Diagnostics.Report(InvalidReturnType.WithArguments(isReturnTypeValid.Message));
}
}
}
Это правильное обнаружение несовпадающих типов, поскольку проект не будет собран, и я вижу диагностику в окне ошибки. Однако вместо MY1023 в столбце кода, а затем моего описания, я вижу LAMA0301, а затем в столбце «Описание» говорится:
MY1023: MY1023 не был определен в профиле пользователя и был заменен общим диагностическим идентификатором.
Однако я не понимаю почему идентификатор заменяется. Диагностика определена как статическое поле только для чтения, я вызываю ее с помощью builder.Diagnostic.Report, и сообщение правильное, поэтому я не понимаю, почему он говорит, что оно не определено в профиле пользователя и заменяет его собственным кодом LAMA.
Есть ли что-то еще, что мне не хватает или требуется, поскольку это, похоже, все, что должно было быть необходимо в соответствии с их документацией. Любая помощь/руководство будет принята с благодарностью. ТИА.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -correctly

Вернуться в «C#»