ShouldSerializePROPERTY and ResetPROPERTY

System.Windows.Forms.Form の ShouldSerializeFont() が override されていないのは不具合じゃないのか。


そういえば、ShouldSerializePROPERTY と ResetPROPERTY は、モディファイアを何に設定するか悩みます。
sealed なクラスであれば、実行時にプロパティグリッドに乗せるような場合を除いて*1*2 private で十分だと思いますが、開発ガイドの例ではすべて public になっています。
System.Windows.Forms アセンブリの中では、あまり public になっているものはないようです。


個人的には、public virtual にしておいていいんじゃないなか〜と思っています。*3
internal や protected *4 でもよさそうに思えますが、そうするとデザイン時用のデザイナを実行時アセンブリから分離すると、デザイナから任意のタイミングで Reset などが呼べなくなるのが不便かな〜とい思いました。

*1:前回の日記にあるように、アクセスレベルを public 以外にすると、アクセス権限があってもパフォーマンスに大きな影響があるので注意

*2:プロパティグリッドの場合は、コレ以外にも色々あるのでアクセス権限がないと例外飛びまくりかもしれません…。

*3:当然、EditorBrowsable は EditorBrowsableState.Never

*4:C++ でサポートされている protected public がよりベターかも