Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Remarque
Cet article est une spécification de fonctionnalité. La spécification sert de document de conception pour la fonctionnalité. Elle inclut les changements de spécification proposés, ainsi que les informations nécessaires à la conception et au développement de la fonctionnalité. Ces articles sont publiés jusqu'à ce que les changements proposés soient finalisés et incorporés dans la spécification ECMA actuelle.
Il peut y avoir des divergences entre la spécification de la fonctionnalité et l'implémentation réalisée. Ces différences sont capturées dans les notes de réunion de conception de langage (LDM) pertinentes .
Vous pouvez en savoir plus sur le processus d’adoption des speclets de fonctionnalités dans la norme de langage C# dans l’article sur les spécifications.
Avertissements de rapport pour les références aux types et aux membres marqués avec 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; }
}
}
Diagnostic signalé
Bien que le diagnostic soit techniquement un avertissement, afin que le compilateur autorise la suppression, il est traité comme une erreur à des fins de création de rapports. Cela entraîne l’échec de la génération si le diagnostic n’est pas supprimé.
Le diagnostic est signalé pour toute référence à un type ou à un membre qui est :
- marqué avec l’attribut,
- dans un assembly ou un module marqué avec l’attribut,
sauf lorsque la référence se produit dans les [Experimental] membres, lorsqu’elle est automatiquement supprimée.
Il est également possible de supprimer le diagnostic par des moyens habituels, comme une option de compilateur explicite ou #pragma.
Par exemple, si l’API est marquée avec [Experimental("DiagID")] ou [Experimental("DiagID", UrlFormat = "https://example.org/{0}")]si le diagnostic peut être supprimé avec #pragma warning disable DiagID.
Une erreur est générée si l’ID de diagnostic donné à l’attribut expérimental n’est pas un identificateur C# valide.
Si une valeur de Message propriété n’est pas fournie, le message de diagnostic est un message spécifique, où '{0}' est le type complet ou le nom de membre.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Si une valeur de Message propriété est fournie, le message de diagnostic est un message spécifique, où '{0}' est le type complet ou le nom de membre et '{1}' est le Message.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
L’attribut n’est pas hérité des types de base ou des membres substitués.
ObsoleteAttribute et DeprecatedAttribute
Des avertissements sont [Experimental] signalés au sein [Obsolete] ou [Deprecated] aux membres.
Avertissements et erreurs pour [Obsolete] et [Deprecated] sont signalés à l’intérieur des [Experimental] membres.
Mais les avertissements et les erreurs pour [Obsolete] et [Deprecated] sont signalés au lieu de [Experimental] s’il existe plusieurs attributs.
C# feature specifications