露出狂
クラス内の、あるメンバをインテリセンスに載せたくない場合、
EditorBrowsableAttributeを使って隠してやることができます。
F#でも
[<EditorBrowsable(EditorBrowsableState.Never)>]
member this.Love() = ()
でもなぜか、僕の愛が相手に見透かされているような気がして、一応確認してみたんです!←
そしたら、普通にインテリセンスに表示されていました。穴があったら埋まりたいです。
早速調べてみると、既知の問題のようでした。
しかし、未だに解決されていないみたい。誰もバグ報告していないのでしょうか。
さらに調べてみると、打開しているようで打開していない、少し打開している打開策を見つけました。
CompilerMessageAttributeを使って、無理やり非表示にする方法です。
[<CompilerMessage("I will give you all my love.", 12345, IsError = false, IsHidden = true)>]
member this.Love() = ()
第二引数はメッセージ番号ですが、10000未満の値は予約済みであるため使用できません。
現在、FsAdventJPのネタであるType Provider DSLを作っているのですが(遅くなってごめんなさい)、コンピューテーション・ビルダーのメンバ(Return, Zero, Yield など)を隠蔽しようとしてこの問題に遭遇しました。
結局だめでしたので、すべて露出します。もうこの際どんどん見てください!
ちなみにこのDSL、コードネームは"TypeProviderMagic"です(多分そのまま採用します)。
理由は、実装の大半が黒魔術だからです。数回心が折れそうになりました。
まとめ
Advent Calendarのネタは慎重に選びましょう!!!