2008年6月22日日曜日

[.NET]インテリセンスの候補に表示しない方法

VS2005や2008では、開発効率を高める機能として、エディタにインテリセンスの機能が搭載されています。
エディタに「.」を入力したときまたは、コントロール+スペースキーで表示される入力候補の一覧ですね。

しかし、この一覧に出したくないと思うことがあります。ライブラリーとして提供する時に、隠しておきたいメソッドがある場合などです。そういう場合、メソッド・クラス・プロパティにアトリビュートをつける事により非表示になります。EditorBrowsableAttribute クラス (System.ComponentModel)と、~ 10 行でズバリ!! - 番外編 ~ 自分流のコントールを作っちゃおう ~が参考になります。で、コードはこんな感じ


[EditorBrowsable(EditorBrowsableState.Never)]
[Browsable(false)]
public string hogehoge
{
get { return "hoge"; }
set { }
}


[EditorBrowsable(EditorBrowsableState.Never)]
public string Bar()
{
return "bar";
}


しかし、C#の場合、

  • 同一プロジェクト内では表示されてしまう
  • 別プロジェクトでもプロジェクト参照すると表示される


なんです。つまるところ、アセンブリ参照ではないとダメということらしい。ということです。これはC#2008EEで試した結果です。
VB.NETではこのような制限はないようです。。。なぜ異なる仕様なのかは、よくわかりませんね。

0 件のコメント: