Sdílet prostřednictvím


ExperimentalAttribute

Poznámka:

Tento článek je specifikace funkce. Specifikace slouží jako návrhový dokument pro funkci. Zahrnuje navrhované změny specifikace spolu s informacemi potřebnými při návrhu a vývoji funkce. Tyto články se publikují, dokud nebudou navrhované změny specifikace finalizovány a začleněny do aktuální specifikace ECMA.

Mezi specifikací funkce a dokončenou implementací může docházet k nějakým nesrovnalostem. Tyto rozdíly jsou zachyceny v příslušných poznámkách ze schůzky jazykového návrhu (LDM).

Další informace o procesu přijetí specifikací funkcí do jazyka C# najdete v článku o specifikacích .

Upozornění sestavy pro odkazy na typy a členy označené pomocí 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; }
    }
}

Nahlášená diagnostika

I když je diagnostika technicky upozornění, takže kompilátor umožňuje potlačení, považuje se za chybu pro účely hlášení. To způsobí selhání sestavení v případě, že diagnostika není potlačena.

Diagnostika je hlášena pro všechny odkazy na typ nebo člen, který je buď:

  • označeno atributem,
  • v sestavení nebo modulu označeném atributem,

s výjimkou případů, kdy se odkaz vyskytuje v rámci [Experimental] členů, když je automaticky potlačen.

Diagnostiku je také možné potlačit obvyklým způsobem, jako je explicitní možnost kompilátoru nebo #pragma.
Pokud je například rozhraní API označené [Experimental("DiagID")] nebo [Experimental("DiagID", UrlFormat = "https://example.org/{0}")], může být diagnostika potlačena #pragma warning disable DiagID.

Pokud ID diagnostiky zadané experimentálnímu atributu není platným identifikátorem jazyka C#, vytvoří se chyba.

Pokud není zadána hodnota vlastnosti Message , diagnostická zpráva je konkrétní zpráva, kde '{0}' je plně kvalifikovaný typ nebo název člena.

'{0}' is for evaluation purposes only and is subject to change or removal in future updates.

Pokud je zadána hodnota vlastnostiMessage, diagnostická zpráva je konkrétní zpráva, kde '{0}' je plně kvalifikovaný typ nebo název člena '{1}'a Message je .

'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.

Atribut není zděděný ze základních typů nebo přepisovaných členů.

Zastaralé atributuAttribute a zastaralého atributuAttribute

Upozornění pro [Experimental] jsou hlášena v rámci [Obsolete] nebo [Deprecated] členy.
Upozornění a chyby pro [Obsolete] členy a [Deprecated] jsou hlášeny uvnitř [Experimental] členů.
Ale upozornění a chyby pro [Obsolete] a [Deprecated] jsou hlášeny místo [Experimental] toho, pokud existuje více atributů.