次の方法で共有


中間言語 (IL) 出力でフラグまたはオプションを生成するカスタム属性

これらの属性をコードに追加して、指定した中間言語 (IL) 修飾子を出力します。 これらの属性は、対応する IL 修飾子を出力に含むようにコンパイラに指示します。

属性 修飾子 コメント
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl コンストラクターに一覧表示されているオプションを追加できます。
System.Runtime.InteropServices.FieldOffsetAttribute .field これにより、メモリ レイアウトのフィールド オフセットが設定されます。
MarshalAsAttribute marshal コンストラクターに一覧表示されているオプションを設定できます。
System.Runtime.CompilerServices.MethodImplAttribute flag コンストラクター引数は、 aggressiveinliningforwardrefなどの特定の名前付きフラグを指定します。 これらのフラグは System.Runtime.CompilerServices.MethodCodeType フィールドのnativemanaged、または optil 修飾子も指定します。
System.NonSerializedAttribute notserialized
System.Runtime.InteropServices.OptionalAttribute [opt]
System.Runtime.InteropServices.PreserveSigAttribute preservesig
System.SerializableAttribute serializable
System.Runtime.InteropServices.StructLayoutAttribute autosequential 、または explicit レイアウト オプションは、パラメーターを使用して設定できます。
System.Runtime.CompilerServices.IndexerNameAttribute この属性をインデクサーに追加して、別のメソッド名を設定します。 既定では、インデクサーは Itemという名前のプロパティにコンパイルされます。 この属性を使用して、別の名前を指定できます。

これらのカスタム属性の一部は、ソース コードに属性を追加するのではなく、他の C# 構文を使用して適用されます。

属性 コメント
System.Runtime.InteropServices.DefaultParameterValueAttribute パラメーターの既定値を指定します。 の既定のパラメーター構文を使用します。
System.Runtime.InteropServices.InAttribute IL [in] 修飾子を指定します。 in または ref readonly 修飾子を使用します。
System.Runtime.InteropServices.OutAttribute IL [out] 修飾子を指定します。 out 修飾子を使用します。
System.Runtime.CompilerServices.SpecialNameAttribute IL specialname 修飾子を指定します。 コンパイラは、必要なメソッドに対してこの修飾子を自動的に追加します。
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute この属性は delegate* 機能に必要です。 コンパイラは、その使用を必要とする任意の delegate* に追加します。 ただし、そのメソッドが関数ポインターに割り当てられている場合は、この属性を任意のメソッド宣言に追加する必要があります。

C# ソースでは、通常、次の属性は許可されていません。 リフレクションを使用するライブラリ作成者を支援し、同じ完全修飾名を持つカスタム属性を作成しないようにするために、ここに記載されています。

属性 コメント
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute ダウンレベル コンパイラが安全に理解できないメタデータを使用できないようにします。
System.Runtime.CompilerServices.DecimalConstantAttribute const decimal フィールドをエンコードします。 ランタイムでは decimal 値を定数値としてサポートしていません。
System.Reflection.DefaultMemberAttribute System.Runtime.CompilerServices.IndexerNameAttributeを使用してインデクサーをエンコードします。 この属性は、名前が Itemと異なる場合に、既定のインデクサーをメモします。 この属性はソースで使用できます。
System.Runtime.CompilerServices.DynamicAttribute シグネチャ内の型が (objectに対して) dynamic かどうかをエンコードします。
System.Runtime.CompilerServices.ExtensionAttribute この属性は拡張メソッドをメモします。 コンパイラは、この属性を含むクラスにも配置します。
System.Runtime.CompilerServices.FixedBufferAttribute この属性は fixed 構造体フィールドを指定します。
System.Runtime.CompilerServices.IsByRefLikeAttribute この属性は ref 構造体を指定します。
System.Runtime.CompilerServices.IsReadOnlyAttribute この属性は、パラメーターに in 修飾子があることを示します。 readonly ref または [In] refin パラメーターを区別します。
System.Runtime.CompilerServices.RequiresLocationAttribute この属性は、パラメーターに readonly ref 修飾子があることを示します。 in[In] refreadonly ref を区別します。
System.Runtime.CompilerServices.IsUnmanagedAttribute この属性は、型パラメーターの unmanaged 制約を指定します。
System.Runtime.CompilerServices.NullableAttributeSystem.Runtime.CompilerServices.NullableContextAttributeSystem.Runtime.CompilerServices.NullablePublicOnlyAttribute これらの属性は、ソース コードで null 許容アノテーションをエンコードします。
System.ParamArrayAttribute この属性は、配列パラメーターの params 修飾子をエンコードします。
System.Runtime.CompilerServices.ParamCollectionAttribute この属性は、配列パラメーター以外の params 修飾子をエンコードします。
System.Runtime.CompilerServices.RefSafetyRulesAttribute この属性は、アセンブリ内の ref 安全性アノテーションを理解するために必要な C# バージョンを指定します。 C# が新機能を取得すると、Ref 安全性規則も進化します。
System.Runtime.CompilerServices.RequiredMemberAttribute この属性は required 修飾子がメンバー宣言に配置されたことを示します。 これは、必要なメンバーの 言語機能のエンコードです。
System.Runtime.CompilerServices.TupleElementNamesAttribute この属性は、シグネチャで使用されるタプル要素名をエンコードします。

さらに、このコンパイラは、内部的に使用される他の属性の宣言を生成できます。 コンパイラは、独自に使用するために、System.Runtime.CompilerServices 名前空間にこれらの属性を生成します。 一部は .NET ランタイム ライブラリに含まれません。 代わりに、コンパイラは、属性が必要なアセンブリ内の internal 型宣言の定義を合成します。