1

現在、次のハックを使用して、拡張メソッドをファイルに対してローカルにし、一意の名前の名前空間に非表示にしています。それは本当にそれを隠すわけではありませんが、他の誰も名前空間をインポートしない限り、それはクールです. しかし、パターンは醜いです。以下のコードは、拡張メソッドのトリックを説明するためのものです。私が 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
4

0 に答える 0