機能提供開始から廃止までとObsolete属性Obsolete属性とXMLドキュメントコメントObsolete属性は廃止予定・非推奨となったクラスやメソッドなどに適用する属性で、機能の利用者に対して、機能が廃止予定・非推奨である旨をコンパイラの警告・エラーによって通知することができます。Obsolete属性による通知はコンパイラによってサポートされるため、機能の利用者はドキュメントの参照なしに機能が古くなった(obsolete=時代遅れ、廃れた)ことを知ることができます。Obsolete属性による通知は、Javaにおける@Deprecatedアノテーションなどに相当する機能と言えます。Obsolete属性を用いることで、API互換性は維持しつつ、バージョンアップによって廃止予定になった機能の通知や、あるいはより洗練された実装への移行を利用者に対して促すことができます。Frameworkのクラスライブラリやサードパーティ製クラスライブラリの利用者側では、Obsolete属性の存在によってライブラリのクラスやメソッドが廃止予定あるいは非推奨であることを知ることができます。Obsolete属性が付与されたクラス・メソッドを呼びだそうとしている場合、コンパイラは自動的にObsolete属性の存在を検知し、警告あるいはエラーとして利用者に通知します。ファイル名に使用できない文字のリストを取得しようとしてPath.InvalidPathCharsフィールドを参照した場合、コンパイラは次のような警告を通知します。instead.'このように、ライブラリの利用者はコンパイラから通知される警告によって機能が廃止予定・非推奨であることを知ることができます。警告として通知されるメッセージに代替機能についての情報が含まれていれば、それも得ることができます。Obsolete属性による警告がない場合、事前にドキュメント等を参照していなければ機能が廃止予定であるか、非推奨となっているかどうかを把握することはできませんが、Obsolete属性が付与されていればコンパイラによる通知によってそれを知ることができます。上記の例における警告メッセージでは、Path.InvalidPathCharsの代わりとしてPath.GetInvalidFileNameCharsメソッドを用いることが提示されているため、利用者はこれに従うことで非推奨となっている機能を使用しないコードに書き換えることができます。2.このように廃止予定・非推奨となっていることを知らずに機能を利用しようとしていた場合でも、Obsolete属性によってそれをコンパイル時までに知ることができ、推奨される代替機能へ移行することができます。§.ファイル・ディレクトリの区切り文字・無効な文字を参照してください。Obsolete属性は、IDEによるコード解析機能が使えない場合に、メンバの参照元を検索する用途でも使うことができます。次のようにメソッドにObsolete属性をつけることで、そのメソッドを呼び出している個所を警告として表示させることができます。2.ユーザー定義の警告・エラーを表示したい場合は、#warningディレクティブや#errorディレクティブを用いることができます。クラスライブラリの提供者側クラスライブラリの提供者側では、バージョンアップに際して既存の機能を廃止したり、非推奨としたい場合にObsolete属性を用いることができます。クラスやメソッドに対してObsolete属性を付与することによって、それが廃止予定・非推奨であることを利用者側に通知することができます。2.このライブラリを利用する側では、このようにObsolete属性が付与されたクラスやメソッドを呼びだそうとした場合、次のようにコンパイラが警告を発します。