目前,我使用以下技巧通过将扩展方法隐藏在唯一命名的命名空间中来使文件本地化。它并没有真正隐藏它,但只要没有其他人导入命名空间,那就很酷了。但是图案很丑。下面的代码只是为了说明扩展方法的技巧。不要试图对我对 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