String の名前とデフォルト値を持つ定数に IProperties の記述に書いたけど、そもそもOptions.GetString("Foo", "foo") というような記述が美しくないよね。Dim foo = Options.Foo 、こうですよね。
ここでWLWプラグインのプロジェクトに次のような拡張メソッド用のModuleを持ってくると……。
Module PropertiesExtension
<System.Runtime.CompilerServices.Extension()> _
Public Function LastUse(ByVal p As IProperties) As DateTime
Return New DateTime(CLng(p.GetString("LastUse", "0")))
End Function
End Module
値の取得のときはこうなる。
Dim dateTime = Options.LastUse
良い感じだけど、値の設定ができない……。作るなら Opions.GetLastUse/SetLastUse でしょうか? うーむ。美しさが下がった。
ちなみに、この例の"LastUse"は、WLWが使ってる値のようでしてプラグイン固有のオプション用のIProperties(つまりOptionsプロパティ)に値が設定されていました。挿入プラグインの場合は、挿入のたびに値が更新されているみたいですが良くはわかりません。URLプラグインではそうではなかったです。