現在、次のハックを使用して、拡張メソッドをファイルに対してローカルにし、一意の名前の名前空間に非表示にしています。それは本当にそれを隠すわけではありませんが、他の誰も名前空間をインポートしない限り、それはクールです. しかし、パターンは醜いです。以下のコードは、拡張メソッドのトリックを説明するためのものです。私が ISubject で行っていることについて結論を出そうとしないでください ;)
MyFancyComponent.cs
--
Import MyFancyComponentMixins
Namespace MyFancyComponentMixins
Module X
<Extension>
Public Function Format(s As ISubject(Of Double)) as ISubject(Of String)
Return s.LocalizeLengthUnits().
Select(
parser:=Function(x) Double.Parse(x),
formatter:=Function(x) x.ToString("0.00"))
End Function
End Module
End Namespace
class MyFancyComponent
Inherits ReactiveUserControl(of MyFancyViewModel)
Public Overrides Iterator Function MakeReactiveBindings() as IEnumerable(of IDisposable)
Yield Me.ViewModel.
PropertySubject(Function(x) x.Height).
Format().
BindToControl(Me.HeightTextBox)
Yield Me.ViewModel.
PropertySubject(Function(x) x.Width).
Format().
BindToControl(Me.WidthTextBox)
End Function
end class