Metalama-Diagnose wird nicht korrekt gemeldetC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Metalama-Diagnose wird nicht korrekt gemeldet

Post by Anonymous »

Ich implementieren einen Methodenaspekt und muss überprüfen, ob der im Attribut angegebene Rückgabewert mit dem Rückgabetyp der Methode übereinstimmt (oder sicher in ihn umgewandelt werden kann).
Ich habe den Aspekt wie folgt definiert:

Code: Select all

[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));
}
}
}
Dadurch werden die nicht übereinstimmenden Typen korrekt erkannt, da das Projekt nicht erstellt werden kann und ich die Diagnose im Fehlerfenster sehe. Anstatt jedoch MY1023 in der Codespalte und dann meine Beschreibung zu sehen, sehe ich LAMA0301 und dann steht in der Beschreibungsspalte:
MY1023: MY1023 wurde im Benutzerprofil nicht definiert und wurde durch eine generische Diagnose-ID ersetzt.
Das verstehe ich jedoch nicht warum die ID ersetzt wird. Die Diagnose ist als statisches schreibgeschütztes-Feld definiert, ich rufe es mit builder.Diagnostic.Report auf und die Meldung ist korrekt, daher verstehe ich nicht, warum sie sagt, dass sie nicht im Benutzerprofil definiert ist und sie durch einen eigenen LAMA-Code ersetzt.
Gibt es noch etwas, das mir fehlt oder benötige, da dies laut Dokumentation alles zu sein schien, was benötigt werden sollte? Für jede Hilfe/Anleitung wäre ich sehr dankbar. TIA.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post