Obsolete属性では、引数messageで警告として出力する文字列を指定することもできるため、単なる廃止予定の通知だけでなく、廃止予定とする理由や、代替となる機能の存在を同時に通知することができます。4以降ではSystem.Enum.TryParse()が提供されています。System.Enum.TryParse()を使ってください。4以降ではSystem.Enum.TryParse()が提供されています。System.Enum.TryParse()を使ってください。4以降ではSystem.Enum.TryParse()が提供されています。System.Enum.TryParse()を使ってください。4以降ではSystem.Enum.TryParse()が提供されています。System.Enum.TryParse()を使ってください。2.また、Obsolete属性の引数errorにtrueを指定すれば、Obsoleteとなったメンバの使用を警告ではなくエラーとして通知させるようにすることができます。利用者側では、このようなObsolete属性が付与されたメンバを呼び出そうとするとコンパイルエラーとなり、一切使用することができなくなります。機能や実装に問題があり、機能へのアクセスや利用を一切禁止したいような場合には、Obsolete属性を使って呼び出しをコンパイルエラーとすることができます。"APOPによるログインには脆弱性が指摘されています。使用しないでください。<Obsolete("APOPによるログインには脆弱性が指摘されています。使用しないでください。'APOPによるログインには脆弱性が指摘されています。使用しないでください。'APOPによるログインには脆弱性が指摘されています。使用しないでください。2.廃止予定ではなく、廃止済みであることを通知したい場合にも、エラーとすることによって利用者に通知できます。"APOPによるログインには脆弱性が指摘されたため、廃止しました。代わりにPopClient.LoginSaslMD5()などを使用してください。<Obsolete("APOPによるログインには脆弱性が指摘されたため、廃止しました。代わりにPopClient.LoginSaslMD5()などを使用してください。2.このほかにも、ライブラリ実装の都合あるいは経緯上、ライブラリ外に公開せざるを得ない(publicな)クラスやメソッドが存在する場合にもObsolete属性を用いることができます。過去のバージョンで公開していた機能を安全な形に隠蔽するようにした場合や、デザイナや外部ツールなどから参照されるような利用者が直接使用しない機能などが考えられます。ドキュメント等に記載されないようなクラスやメソッドの場合でも、それがpublicであれば入力候補等で表示されてしまいます。このようなメンバにObsolete属性を付与しておくことによって、利用者が誤って使用してしまうことや、意図的に使用した場合の結果が保証できないことを通知することができます。[Obsolete("ライブラリの初期化に必要なメソッドです。ライブラリ外から呼び出した場合は現在の状態が変更されるため呼び出さないでください。[Obsolete("ライブラリの状態取得に必要なプロパティです。このプロパティの情報を前提としたコードを記述しないでください。<Obsolete("ライブラリの初期化に必要なメソッドです。ライブラリ外から呼び出した場合は現在の状態が変更されるため呼び出さないでください。<Obsolete("ライブラリの状態取得に必要なプロパティです。このプロパティの情報を前提としたコードを記述しないでください。Frameworkのクラスライブラリにおいてもこのようなメンバが存在します。WebClient.AllowReadStreamBufferingプロパティなどはObsolete属性が付与されていて、ユーザーが直接使用することを想定としたものではないことが通知されるようになっています。メンバの存在をデバッガやデザイナから見えなくする目的には、DebuggerHidden属性やDebuggerNonUserCode属性などを用いることができます。Frameworkのクラスライブラリでは、既にUri.MakeRelativeメソッドやPath.InvalidPathCharsフィールドなどにObsolete属性が適用され、非推奨となっています。このほかにも、ドキュメントの以下のページにて非推奨となった型・メンバの一覧が掲載されています。互換性のために残されているメンバーObsolete属性を適用できる個所Obsolete属性は、次のようにクラス・構造体・インターフェイスなどのすべての型、およびメソッド・プロパティ・イベント・フィールドなどのメンバに対して適用することができます。publicではない型・メンバにも適用することができます。アセンブリ全体をObsoleteにすることはできません。2.型全体に対してObsolete属性を適用した場合、その型のすべてのメンバにObsolete属性が適用された状態と同じになります。型全体をObsoleteにして、特定のメンバのみを非Obsoleteにするといったことはできません。