ExperimentalAttribute
Notera
Den här artikeln är en funktionsspecifikation. Specifikationen fungerar som designdokument för funktionen. Den innehåller föreslagna specifikationsändringar, tillsammans med information som behövs under utformningen och utvecklingen av funktionen. Dessa artiklar publiceras tills de föreslagna specifikationsändringarna har slutförts och införlivats i den aktuella ECMA-specifikationen.
Det kan finnas vissa skillnader mellan funktionsspecifikationen och den slutförda implementeringen. Dessa skillnader återspeglas i de relevanta anteckningarna från språkkonstruktionsmötet (LDM) .
Du kan läsa mer om processen för att införa funktionsspecifikationer i C#-språkstandarden i artikeln om specifikationerna.
Rapportera varningar för referenser till typer och medlemmar som har markerats med System.Diagnostics.CodeAnalysis.ExperimentalAttribute
.
namespace System.Diagnostics.CodeAnalysis
{
[AttributeUsage(AttributeTargets.Assembly |
AttributeTargets.Module |
AttributeTargets.Class |
AttributeTargets.Struct |
AttributeTargets.Enum |
AttributeTargets.Constructor |
AttributeTargets.Method |
AttributeTargets.Property |
AttributeTargets.Field |
AttributeTargets.Event |
AttributeTargets.Interface |
AttributeTargets.Delegate, Inherited = false)]
public sealed class ExperimentalAttribute : Attribute
{
public ExperimentalAttribute(string diagnosticId)
{
DiagnosticId = diagnosticId;
}
public string DiagnosticId { get; }
public string? UrlFormat { get; set; }
public string? Message { get; set; }
}
}
Rapporterad diagnostik
Även om diagnostiken tekniskt sett är en varning, så att kompilatorn tillåter att den utelämnas, behandlas den som ett fel i syfte att rapportera. Detta gör att bygget misslyckas om diagnostiken inte ignoreras.
Diagnosen rapporteras för alla referenser till en typ eller medlem som antingen är:
- markerad med attributet ,
- i en sammansättning eller modul markerad med attributet
utom när referensen inträffar inom [Experimental]
medlemmar, när den ignoreras automatiskt.
Det är också möjligt att undertrycka diagnostiken på vanligt sätt, till exempel ett explicit kompilatoralternativ eller #pragma
.
Om API:et till exempel är markerat med [Experimental("DiagID")]
eller [Experimental("DiagID", UrlFormat = "https://example.org/{0}")]
kan diagnostiken ignoreras med #pragma warning disable DiagID
.
Ett fel uppstår om diagnostik-ID:t som ges till det experimentella attributet inte är en giltig C#-identifierare.
Om ett värde för Message
egenskap inte anges är diagnostikmeddelandet ett specifikt meddelande, där '{0}'
är den fullständigt kvalificerade typen eller medlemsnamnet.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Om ett värde för egenskapen Message
anges är diagnostikmeddelandet ett specifikt meddelande, där '{0}'
är den fullständigt kvalificerade typen eller medlemsnamnet och '{1}'
är Message
.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
Attributet ärvs inte från bastyper eller åsidosatta medlemmar.
ObsoleteAttribute (föråldrad) och DeprecatedAttribute (inte rekommenderad)
Varningar för [Experimental]
rapporteras inom [Obsolete]
eller [Deprecated]
medlemmar.
Varningar och fel för [Obsolete]
och [Deprecated]
rapporteras hos [Experimental]
medlemmar.
Men varningar och fel för [Obsolete]
och [Deprecated]
rapporteras i stället för [Experimental]
om det finns flera attribut.
C# feature specifications