Udostępnij za pośrednictwem


Atrybuty niestandardowe, które generują flagi lub opcje w danych wyjściowych języka pośredniego (IL)

Dodajesz te atrybuty do swojego kodu, aby kompilator mógł emitować określony modyfikator języka pośredniego (IL). Te atrybuty instruują kompilator, aby uwzględnił odpowiedni modyfikator IL w danych wyjściowych.

Atrybut Modyfikator Komentarze
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl Możesz dodać opcje wymienione w konstruktorze.
System.Runtime.InteropServices.FieldOffsetAttribute .field Ustawia przesunięcie pola w układzie pamięci.
MarshalAsAttribute marshal Można ustawić opcje wymienione w konstruktorze.
System.Runtime.CompilerServices.MethodImplAttribute flag Argumenty konstruktora określają określone nazwane flagi, takie jak aggressiveinlining lub forwardref. Te flagi określają również modyfikatory native, managedlub optil dla pola System.Runtime.CompilerServices.MethodCodeType.
System.NonSerializedAttribute notserialized
System.Runtime.InteropServices.OptionalAttribute [opt]
System.Runtime.InteropServices.PreserveSigAttribute preservesig
System.SerializableAttribute serializable
System.Runtime.InteropServices.StructLayoutAttribute auto, sequentiallub explicit Opcje układu można ustawić przy użyciu parametrów.
System.Runtime.CompilerServices.IndexerNameAttribute Ten atrybut należy dodać do indeksatora, aby ustawić inną nazwę metody. Domyślnie indeksatory są kompilowane do właściwości o nazwie Item. Możesz określić inną nazwę przy użyciu tego atrybutu.

Niektóre z tych atrybutów niestandardowych są stosowane przy użyciu innej składni języka C#, a nie dodawania atrybutu do kodu źródłowego.

Atrybut Komentarze
System.Runtime.InteropServices.DefaultParameterValueAttribute Określa wartość domyślną parametru. Użyj domyślnej składni parametru .
System.Runtime.InteropServices.InAttribute Określa modyfikator IL [in]. Użyj modyfikatorów in lub ref readonly.
System.Runtime.InteropServices.OutAttribute Określa modyfikator IL [out]. Użyj modyfikatora out.
System.Runtime.CompilerServices.SpecialNameAttribute Określa modyfikator IL specialname. Kompilator automatycznie dodaje ten modyfikator dla metod, które tego wymagają.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Ten atrybut jest wymagany dla funkcji delegate*. Kompilator dodaje go do wszystkich delegate*, które wymagają jego użycia. Należy jednak dodać ten atrybut do dowolnej deklaracji metody, gdy ta metoda jest przypisana do wskaźnika funkcji.

Następujące atrybuty są zwykle niedozwolone w źródle języka C#. Są one wymienione tutaj, aby pomóc autorom bibliotek, którzy używają refleksji, i abyś nie tworzył atrybutów niestandardowych o tej samej całkowicie kwalifikowanej nazwie.

Atrybut Komentarze
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Uniemożliwia starszym kompilatorom korzystanie z metadanych, których nie potrafią bezpiecznie zrozumieć.
System.Runtime.CompilerServices.DecimalConstantAttribute Koduje pola const decimal. Środowisko uruchomieniowe nie obsługuje wartości decimal jako wartości stałych.
System.Reflection.DefaultMemberAttribute Koduje indeksatory za pomocą System.Runtime.CompilerServices.IndexerNameAttribute. Ten atrybut zwraca uwagę na domyślny indeksator, gdy jego nazwa różni się od Item. Ten atrybut jest dozwolony w źródle.
System.Runtime.CompilerServices.DynamicAttribute Koduje, czy typ w podpisie jest dynamic (a nie object).
System.Runtime.CompilerServices.ExtensionAttribute Ten atrybut notuje metody rozszerzeń. Kompilator umieszcza również ten atrybut w klasach zawierających.
System.Runtime.CompilerServices.FixedBufferAttribute Ten atrybut określa pola struktury fixed.
System.Runtime.CompilerServices.IsByRefLikeAttribute Ten atrybut określa strukturę ref.
System.Runtime.CompilerServices.IsReadOnlyAttribute Ten atrybut wskazuje, że parametr ma modyfikator in. Odróżnia on parametry in od parametrów readonly ref lub [In] ref.
System.Runtime.CompilerServices.RequiresLocationAttribute Ten atrybut wskazuje, że parametr ma modyfikator readonly ref. Odróżnia readonly ref od in lub [In] ref.
System.Runtime.CompilerServices.IsUnmanagedAttribute Ten atrybut określa ograniczenie unmanaged dla parametru typu.
System.Runtime.CompilerServices.NullableAttribute, System.Runtime.CompilerServices.NullableContextAttribute, System.Runtime.CompilerServices.NullablePublicOnlyAttribute Te atrybuty zawierają adnotacje nullowalności w twoim kodzie źródłowym.
System.ParamArrayAttribute Ten atrybut koduje modyfikator params parametrów tablicy.
System.Runtime.CompilerServices.ParamCollectionAttribute Ten atrybut koduje modyfikator params w parametrach innych niż tablica.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Ten atrybut określa wersję języka C#, która jest wymagana w celu zrozumienia adnotacji bezpieczeństwa ref w zestawie. Reguły bezpieczeństwa ref ewoluują, gdy język C# otrzymuje nowe funkcje.
System.Runtime.CompilerServices.RequiredMemberAttribute Ten atrybut wskazuje, że modyfikator required został umieszczony w deklaracji członka. Jest to kodowanie wymaganych elementów członkowskich funkcji języka.
System.Runtime.CompilerServices.TupleElementNamesAttribute Ten atrybut koduje nazwy elementów w krotkach używane w sygnaturach.

Ponadto kompilator może wygenerować deklarację dla innych atrybutów używanych wewnętrznie. Kompilator generuje te atrybuty w przestrzeni nazw System.Runtime.CompilerServices do użytku własnego. Niektóre z nich nie są w bibliotekach środowiska uruchomieniowego platformy .NET. Zamiast tego kompilator syntetyzuje definicję deklaracji typu internal w dowolnym zestawie, w którym jest wymagany atrybut.