次の方法で共有


インターフェイスのデザイン

インターフェイスでは、実装側が提供する必要があるメンバーのセットのシグネチャを定義します。 インターフェイスでは、メンバーの実装の詳細を提供できません。 たとえば、ICollection インターフェイスは、コレクションの操作に関連するメンバーを定義します。 インターフェイスを実装する各具象クラスは、これらのメンバーの実装の詳細を提供する必要があります。 クラスは 1 つのクラスからしか継承できませんが、複数のインターフェイスを実装できます。 以下のガイドラインに従うと、インターフェイスを正しくデザインできます。

いくつかの値型を含む型のセットによって一定の共通機能をサポートする必要がある場合は、インターフェイスを定義してください。

値型は、ValueType を継承する必要があります。 このため、抽象クラスを使用して値型のコントラクトを指定することはできません。代わりにインターフェイスを使用する必要があります。

既に他の型を継承している型でインターフェイスの機能をサポートする必要がある場合は、インターフェイスを定義することを検討してください。

マーカー インターフェイス (メンバーを含まないインターフェイス) の使用は避けてください。

カスタム属性を使用すると、型をマークできます。 カスタム属性の詳細については、「カスタム属性の記述」を参照してください。 コードを実行するまで属性のチェックを保留できる場合は、カスタム属性をお勧めします。 コンパイル時のチェックが必要な場合、このガイドラインは適合しません。

インターフェイスの実装である型を少なくとも 1 つ提供してください。

これにより、インターフェイスを適切にデザインし、無理なく実装できます。 Int32 クラスは、IComparable インターフェイスの実装を提供します。

定義した各インターフェイスを使用するメンバー (インターフェイスをパラメーターとして受け取るメソッドやインターフェイスとして型指定されたプロパティなど) を少なくとも 1 つ提供してください。

この機構によっても、インターフェイスを適切にデザインし、無理なく使用できるようになります。

既に提供済みのインターフェイスにはメンバーを追加しないでください。

新しいメンバーを追加すると、以前のバージョンのインターフェイスを実装したコードが破損します。 これは、可能な場合は一般的に、インターフェイスよりもクラスの使用が推奨される主な理由の 1 つです。 詳細については、「クラスまたはインターフェイスの選択」を参照してください。

インターフェイスを定義する際に追加のメンバーが必要な場合は、新しいインターフェイスとそれを使用する適切なメンバーを実装します。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

概念

クラスまたはインターフェイスの選択

その他の技術情報

型のデザインのガイドライン

クラス ライブラリ開発のデザイン ガイドライン