Megosztás a következőn keresztül:


ExperimentalAttribute

Jegyzet

Ez a cikk egy funkcióspecifikáció. A specifikáció a funkció tervezési dokumentumaként szolgál. Tartalmazza a specifikáció javasolt módosításait, valamint a funkció tervezése és fejlesztése során szükséges információkat. Ezeket a cikkeket mindaddig közzéteszik, amíg a javasolt specifikációmódosításokat nem véglegesítik, és be nem építik a jelenlegi ECMA-specifikációba.

A szolgáltatás specifikációja és a befejezett implementáció között eltérések lehetnek. Ezeket a különbségeket a vonatkozó nyelvi tervezési értekezlet (LDM) megjegyzései rögzítik.

A funkcióspektusok C# nyelvi szabványba való bevezetésének folyamatáról a specifikációkcímű cikkben olvashat bővebben.

A System.Diagnostics.CodeAnalysis.ExperimentalAttributemegjelölt típusokra és tagokra mutató hivatkozásokra vonatkozó figyelmeztetések jelentése.

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; }
    }
}

Jelentett diagnosztika

Bár a diagnosztika technikailag figyelmeztetés, így a fordítóprogram engedélyezi annak elnyomását, a jelentés céljából mégis hibaként kezelik. Ez azt eredményezi, hogy a build meghiúsul, ha a diagnosztikát nem tiltja le a rendszer.

A diagnosztikát egy olyan típusra vagy tagra való hivatkozás esetén jelenti a rendszer, amely a következő:

  • attribútummal jelölve,
  • az attribútummal megjelölt szerelvényben vagy modulban,

kivéve, ha a hivatkozás [Experimental] tagokon belül történik, akkor az automatikusan el lesz nyomva.

A diagnosztikát a szokásos módon is el lehet nyomni, például egy kifejezett fordítóprogram opcióval vagy a #pragma-ával.
Ha például az API [Experimental("DiagID")] vagy [Experimental("DiagID", UrlFormat = "https://example.org/{0}")]van megjelölve, a diagnosztika letiltható #pragma warning disable DiagID.

Hiba keletkezik, ha a kísérleti attribútumnak adott diagnosztikai azonosító nem érvényes C# azonosító.

Ha nincs megadva Message tulajdonság értéke, a diagnosztikai üzenet egy konkrét üzenet, ahol '{0}' a teljesen minősített típus vagy tagnév.

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

Ha Message tulajdonságnak van megadott értéke, a diagnosztikai üzenet egy konkrét értesítés, ahol '{0}' a teljesen definiált típus vagy tagnév, és '{1}' a Message.

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

Az attribútum nem öröklődik az alaptípusoktól vagy a felülírt tagoktól.

ElavultAttribute és DeprecatedAttribute

A [Experimental] figyelmeztetései [Obsolete] vagy [Deprecated] tagokon belül jelennek meg.
A [Obsolete] és [Deprecated] figyelmeztetéseit és hibáit a [Experimental] elemekben jelezzük.
A [Obsolete] és [Deprecated] figyelmeztetései és hibái azonban [Experimental] helyett jelennek meg, ha több attribútum is létezik.