Диагностика 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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