インターフェイスで宣言された静的抽象メンバー
.NET 6 のプレビューの新機能で、static
インターフェイス メンバーを abstract
としてマークできるようになりました。 この機能には、以前は違法と見なされていた中間言語 (IL) メタデータ パターンを許可するための ECMA 335 仕様へのいくつかの変更が含まれます。 詳細については、dotnet/runtime#49558 を参照してください。
以前の動作
静的インターフェイスが abstract
としてマークされた場合:
- C# コンパイラによって、エラー CS0112 が生成されました。
- ツールおよびその他のコンパイラによって、違法な IL メタデータが生成されました。
新しい動作
.NET 6 以降、静的インターフェイス メンバーを abstract
としてマークし、正常にコンパイルできるようになりました。 さらに、生成される IL メタデータ パターンは、ECMA 335 仕様の変更により、合法である見なされるようになりました。
static abstract
インターフェイス メンバーの実装は、インターフェイスを実装する型によって提供されます。
注意
.NET 6 の場合、インターフェイス メンバーを static abstract
としてマークできるようにするには、プロジェクトのプレビュー機能を有効にする必要があります。
これは新たに合法となった IL パターンであるため、既存のツールが、関連付けられているメタデータを誤って処理し、予期しない動作が発生する可能性があります。 static abstract
メンバーを持つインターフェイスが、System.Int32 など、プリミティブ型に表示されるようになったため、ツールが新しいメタデータ パターンに遭遇する可能性があります。
導入されたバージョン
.NET 6
破壊的変更の種類
この変更は、バイナリの互換性に影響を与える可能性があります。
変更理由
この変更は、静的メンバーを抽象化し、それらの静的メンバーを定義する型間で適用される一般化されたコードを記述する方法がなかったために導入されました。 これは、静的フォームにのみ存在するメンバーの種類 (演算子など) で特に問題がありました。
推奨される操作
.Net バイナリまたは C# ソース コードを使用するツールを更新して、現在 .NET プリミティブ型に存在するものを含め、static abstract
インターフェイス メンバーの新しい概念を考慮してください。
影響を受ける API
N/A
関連項目
.NET