次の方法で共有


抽象化の実装用の基本クラス

更新 : 2007 年 11 月

抽象化の実装用の基本クラスは、抽象クラスや抽象インターフェイス (抽象化) の実装を支援するためのクラスです。このクラスは、抽象化の実装に関する詳細の一部を提供し、場合によっては継承なしに使用できます。たとえば、Collection<T> は、コレクションを作成するために使用したり、厳密に型指定されたコレクション クラスを定義するために継承したりできます。

Collection<T> クラスを使用して厳密に型定義されたコレクション オブジェクトを作成する方法を次のコード例に示します。

Public Class PointManager
    Implements IEnumerable

    Private pointCollection As Collection(Of Point) = New Collection(Of Point)

    Public Sub AddPoint(ByVal p As Point)
        pointCollection.Add(p)
    End Sub

    Public Function RemovePoint(ByVal p As Point) As Boolean
        Return pointCollection.Remove(p)
    End Function

    Public Function GetEnumerator() As IEnumerator _
        Implements IEnumerable.GetEnumerator

        Return pointCollection.GetEnumerator
    End Function
End Class
public class PointManager : IEnumerable
{
    Collection<Point> pointCollection = new Collection<Point>();

    public void AddPoint(Point p)
    {
        pointCollection.Add(p);
    }
    public bool RemovePoint(Point p)
    {
        return pointCollection.Remove(p);
    }
    public IEnumerator GetEnumerator()
    {
        return pointCollection.GetEnumerator();
    }
}

Collection<T> クラスを使用して厳密に型定義されたコレクションを定義する方法を次のコード例に示します。

Public Class PointCollection
    Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}

CollectionBase も .NET Framework 基本クラスの 1 つです。これは、非ジェネリック コレクションの実装に役立ちます。Collection<T> と違って、CollectionBase は直接使用できません。

抽象化の実装用の基本クラスをライブラリの一部として提供するのは、ライブラリを使用する開発者にとっての付加価値が高まる場合に限定する必要があります。基本クラスがライブラリを実装する際にしか役立たない場合は、基本クラスをパブリックに参照可能にしないでください。基本クラスを内部で使用してライブラリの開発を簡素化するには、パブリック メンバは、基本クラスを継承する代わりに基本クラスに機能を委ねる必要があります。

基本クラスをパブリック API で使用する場合は、その名前に Base というサフィックスを含めないでください。

ライブラリが基本クラスを戻り値の型またはパラメータの型として公開している場合、その基本クラスには、Base というサフィックスを付けないでください。

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

デザイン ガイドラインの詳細については、2005 年に Addison-Wesley から出版されている Krzysztof Cwalina、Brad Abrams 共著の『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』を参照してください。

参照

その他の技術情報

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

機能拡張のデザイン