次の方法で共有


引数の検証

更新 : 2007 年 11 月

引数を正しく検証するには、次のガイドラインに従います。

パブリック メンバ、プロテクト メンバ、または明示的に実装されたメンバに渡される引数は必ず検証します。検証が失敗した場合は、System.ArgumentException、またはその派生クラスの 1 つをスローします。

このガイドラインでは、パブリックに参照できるメンバに検証コードが含まれている必要はありません。検証を処理する内部メソッドに引数を渡すこともできます。

列挙型パラメータを検証します。

共通言語ランタイム (CLR: Common Language Runtime) では、値が列挙体で定義されたかどうかにかかわらず、列挙値に対して任意の整数値をキャストできます。したがって、列挙型の引数が列挙型で定義された値であると想定することはできません。

System.Enum.IsDefined (System.Type,System.Object) は、バージョン間で異なる可能性がある列挙体のランタイム型に基づいているため、列挙値の範囲チェックに使用しないようにします。

新しいバージョンのライブラリでは、付属する列挙体に値を追加できます。IsDefined は新しい値に対して true を返すため、新しい値を処理していない既存のコードが新しい値を有効な入力として処理します。したがって、データ検証用に IsDefined を使用するのは危険です。入力値がプログラムのサポート範囲内であることを確認し、範囲外の場合は例外を返します。

変更可能な引数が渡された場合は、検証後に引数が変更されていないことを確認します。

メンバがセキュリティに関連する場合は、変更可能なオブジェクトのプライベート コピーを作成し、そのコピーを使用して検証および処理を行います。これは、変更可能なデータだけに当てはまります。Uri オブジェクトなど、変更できないデータをコピーする必要はありません。

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』を参照してください。

参照

概念

パラメータのデザイン

その他の技術情報

メンバのデザインのガイドライン

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