クラスライブラリを作っていて、既存のメソッドを非推奨にしたい事があります。例えば新規に実装したメソッドの方が効率が良いんだけど、古いメソッドも残しているようなケース。 メソッドの名前だけ残して、呼ばれたら例外を投げるような実装でも事足りるような気がするんだけど、不用意に例外が出るのもバグっぽいし、代替できるメソッドもあるなら、それへの手がかりも表示もしたい。なんかうまい手はないかと思ってたら、今時のC#にはちゃんと用意されていました。 Obsolete属性(C# プログラミング ガイド) で、実際に試してみる。
メソッドにobsolete属性を付ける
単純にメソッドに以下のような記述を追加すればOK。
[System.Obsolete(“‘Get’ メソッドを使用して下さい”, true)]
public abstractMaterial GetMaterial(string matName)
この状態でビルドすると、メソッドを使っている箇所でエラーになるけど、ちゃんと別のメソッドを使うように促される。
VSの画面でもしっかり表示される。うーん、よくできている。
実際には、うっかり似たようなメソッドを作ってしまったり、名称の統一感がない(Begin/EndとStart/Endとか)名称で付けてしまってメソッドを整理するケースが多いかな?