From 323c1a49c1aeb1ccd0511f55e1575d29ef9cbf93 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Thu, 24 Sep 2015 23:50:11 +0300 Subject: [PATCH 1/3] Removed core dependency on Splat --- samples/TestApplication/App.config | 4 + .../TestApplication/TestApplication.csproj | 3 - samples/TestApplication/packages.config | 15 ++- .../XamlTestApplication.csproj | 7 +- samples/XamlTestApplication/packages.config | 2 +- src/Gtk/Perspex.Cairo/CairoPlatform.cs | 7 +- .../Perspex.Cairo/Media/FormattedTextImpl.cs | 1 - .../Perspex.Cairo/Media/StreamGeometryImpl.cs | 1 - src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj | 3 - src/Gtk/Perspex.Cairo/packages.config | 7 +- src/Gtk/Perspex.Gtk/GtkPlatform.cs | 20 +-- src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj | 3 - src/Gtk/Perspex.Gtk/packages.config | 7 +- .../Context/PerspexWiringContext.cs | 3 +- .../Perspex.Markup.Xaml.csproj | 3 - .../Perspex.Markup.Xaml/PerspexXamlLoader.cs | 5 +- .../Perspex.Markup.Xaml/packages.config | 1 - src/Perspex.Application/Application.cs | 22 ++-- .../Perspex.Application.csproj | 3 - src/Perspex.Application/packages.config | 1 - src/Perspex.Base/Perspex.Base.csproj | 4 +- src/Perspex.Base/PerspexLocator.cs | 119 ++++++++++++++++++ src/Perspex.Base/Threading/DispatcherTimer.cs | 5 +- src/Perspex.Base/Threading/MainLoop.cs | 3 +- src/Perspex.Base/packages.config | 1 - src/Perspex.Controls/Control.cs | 3 +- src/Perspex.Controls/MenuItem.cs | 18 +-- src/Perspex.Controls/Perspex.Controls.csproj | 3 - src/Perspex.Controls/Primitives/Popup.cs | 3 +- src/Perspex.Controls/Primitives/PopupRoot.cs | 5 +- src/Perspex.Controls/SystemDialog.cs | 5 +- .../Templates/DataTemplateExtensions.cs | 3 +- src/Perspex.Controls/TextBox.cs | 5 +- src/Perspex.Controls/TopLevel.cs | 11 +- src/Perspex.Controls/Window.cs | 3 +- src/Perspex.Controls/packages.config | 1 - .../Adapters/PerspexAdapter.cs | 3 +- .../Perspex.HtmlRenderer.csproj | 3 - src/Perspex.HtmlRenderer/packages.config | 1 - src/Perspex.Input/Cursors.cs | 3 +- src/Perspex.Input/FocusManager.cs | 3 +- src/Perspex.Input/InputManager.cs | 3 +- src/Perspex.Input/KeyboardDevice.cs | 7 +- src/Perspex.Input/MouseDevice.cs | 7 +- src/Perspex.Input/Perspex.Input.csproj | 3 - src/Perspex.Input/packages.config | 1 - .../Perspex.Interactivity.csproj | 3 - src/Perspex.Interactivity/packages.config | 1 - src/Perspex.Layout/Perspex.Layout.csproj | 3 - src/Perspex.Layout/packages.config | 1 - .../Media/EllipseGeometry.cs | 3 +- src/Perspex.SceneGraph/Media/FormattedText.cs | 3 +- .../Media/Imaging/Bitmap.cs | 7 +- .../Media/Imaging/RenderTargetBitmap.cs | 3 +- .../Media/RectangleGeometry.cs | 3 +- .../Media/StreamGeometry.cs | 3 +- .../Perspex.SceneGraph.csproj | 3 - src/Perspex.SceneGraph/packages.config | 1 - src/Perspex.Styling/Perspex.Styling.csproj | 3 - src/Perspex.Styling/Styling/Styler.cs | 3 +- .../Perspex.Themes.Default.csproj | 3 - src/Perspex.Themes.Default/packages.config | 1 - src/Shared/PlatformSupport/SharedPlatform.cs | 7 +- .../Perspex.Direct2D1/Direct2D1Platform.cs | 14 +-- .../Media/FormattedTextImpl.cs | 3 +- .../Perspex.Direct2D1/Media/GeometryImpl.cs | 3 +- .../Media/StreamGeometryImpl.cs | 5 +- .../Perspex.Direct2D1.csproj | 3 - src/Windows/Perspex.Direct2D1/Renderer.cs | 9 +- src/Windows/Perspex.Direct2D1/packages.config | 1 - .../Perspex.Win32/Perspex.Win32.csproj | 3 - src/Windows/Perspex.Win32/Win32Platform.cs | 26 ++-- src/Windows/Perspex.Win32/packages.config | 1 - .../Perspex.Base.UnitTests.csproj | 3 - tests/Perspex.Base.UnitTests/packages.config | 1 - .../ContentControlTests.cs | 8 +- .../ControlTests.cs | 9 +- .../DropDownTests.cs | 6 +- .../Perspex.Controls.UnitTests.csproj | 3 - .../Primitives/PopupTests.cs | 16 +-- .../TemplatedControlTests.cs | 6 +- .../TopLevelTests.cs | 57 ++++----- .../packages.config | 1 - .../Controls/Shapes/PathTests.cs | 5 +- .../Media/GeometryTests.cs | 5 +- .../Perspex.Direct2D1.UnitTests.csproj | 3 - .../packages.config | 1 - .../Perspex.Input.UnitTests.csproj | 3 - tests/Perspex.Input.UnitTests/packages.config | 1 - .../Perspex.Interactivity.UnitTests.csproj | 3 - .../packages.config | 1 - .../FullLayoutTests.cs | 24 ++-- .../Perspex.Layout.UnitTests.csproj | 3 - .../Perspex.Layout.UnitTests/packages.config | 1 - .../Perspex.Cairo.RenderTests.csproj | 3 - tests/Perspex.RenderTests/packages.config | 1 - .../Perspex.SceneGraph.UnitTests.csproj | 3 - .../packages.config | 1 - .../Perspex.Styling.UnitTests.csproj | 3 - .../Perspex.Styling.UnitTests/packages.config | 1 - 100 files changed, 303 insertions(+), 332 deletions(-) create mode 100644 src/Perspex.Base/PerspexLocator.cs diff --git a/samples/TestApplication/App.config b/samples/TestApplication/App.config index 95bd940b8f..e354378dad 100644 --- a/samples/TestApplication/App.config +++ b/samples/TestApplication/App.config @@ -21,6 +21,10 @@ + + + + \ No newline at end of file diff --git a/samples/TestApplication/TestApplication.csproj b/samples/TestApplication/TestApplication.csproj index 4ccecb2cd0..b56417d523 100644 --- a/samples/TestApplication/TestApplication.csproj +++ b/samples/TestApplication/TestApplication.csproj @@ -66,9 +66,6 @@ ..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - diff --git a/samples/TestApplication/packages.config b/samples/TestApplication/packages.config index a1bddc832f..16c00246fc 100644 --- a/samples/TestApplication/packages.config +++ b/samples/TestApplication/packages.config @@ -1,11 +1,10 @@  - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/samples/XamlTestApplication/XamlTestApplication.csproj b/samples/XamlTestApplication/XamlTestApplication.csproj index 5e99700b38..d70e2e3297 100644 --- a/samples/XamlTestApplication/XamlTestApplication.csproj +++ b/samples/XamlTestApplication/XamlTestApplication.csproj @@ -36,6 +36,10 @@ 4 + + ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll + True + @@ -55,9 +59,6 @@ ..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll diff --git a/samples/XamlTestApplication/packages.config b/samples/XamlTestApplication/packages.config index 0fafe14cb6..e4f85a244e 100644 --- a/samples/XamlTestApplication/packages.config +++ b/samples/XamlTestApplication/packages.config @@ -7,6 +7,6 @@ - + \ No newline at end of file diff --git a/src/Gtk/Perspex.Cairo/CairoPlatform.cs b/src/Gtk/Perspex.Cairo/CairoPlatform.cs index f25aadda95..55da932a59 100644 --- a/src/Gtk/Perspex.Cairo/CairoPlatform.cs +++ b/src/Gtk/Perspex.Cairo/CairoPlatform.cs @@ -6,7 +6,6 @@ using Perspex.Cairo.Media; using Perspex.Cairo.Media.Imaging; using Perspex.Media; using Perspex.Platform; -using Splat; namespace Perspex.Cairo { @@ -19,11 +18,7 @@ namespace Perspex.Cairo private static Pango.Context s_pangoContext = CreatePangoContext(); - public static void Initialize() - { - var locator = Locator.CurrentMutable; - locator.Register(() => s_instance, typeof(IPlatformRenderInterface)); - } + public static void Initialize() => PerspexLocator.CurrentMutable.Bind().ToConstant(s_instance); public IBitmapImpl CreateBitmap(int width, int height) { diff --git a/src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs b/src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs index 0cbfc50097..082506c153 100644 --- a/src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs +++ b/src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using Perspex.Media; using Perspex.Platform; -using Splat; namespace Perspex.Cairo.Media { diff --git a/src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs b/src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs index 7e7f520f02..a408cba039 100644 --- a/src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs +++ b/src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs @@ -4,7 +4,6 @@ using System; using Perspex.Media; using Perspex.Platform; -using Splat; using System.Collections.Generic; namespace Perspex.Cairo.Media diff --git a/src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj b/src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj index 6e4155d610..e389fac5b2 100644 --- a/src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj +++ b/src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj @@ -51,9 +51,6 @@ ..\..\..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll - - ..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - diff --git a/src/Gtk/Perspex.Cairo/packages.config b/src/Gtk/Perspex.Cairo/packages.config index b554ddfc08..d26f4b6d2a 100644 --- a/src/Gtk/Perspex.Cairo/packages.config +++ b/src/Gtk/Perspex.Cairo/packages.config @@ -1,6 +1,5 @@  - - - - + + + \ No newline at end of file diff --git a/src/Gtk/Perspex.Gtk/GtkPlatform.cs b/src/Gtk/Perspex.Gtk/GtkPlatform.cs index 543cba012b..e6c2db7c9c 100644 --- a/src/Gtk/Perspex.Gtk/GtkPlatform.cs +++ b/src/Gtk/Perspex.Gtk/GtkPlatform.cs @@ -8,7 +8,6 @@ using Perspex.Input.Platform; using Perspex.Input; using Perspex.Platform; using Perspex.Shared.PlatformSupport; -using Splat; namespace Perspex.Gtk { @@ -29,15 +28,16 @@ namespace Perspex.Gtk public static void Initialize() { - var locator = Locator.CurrentMutable; - locator.Register(() => new WindowImpl(), typeof(IWindowImpl)); - locator.Register(() => new PopupImpl(), typeof(IPopupImpl)); - locator.Register(() => new ClipboardImpl(), typeof(IClipboard)); - locator.Register(() => CursorFactory.Instance, typeof(IStandardCursorFactory)); - locator.Register(() => GtkKeyboardDevice.Instance, typeof(IKeyboardDevice)); - locator.Register(() => s_instance, typeof(IPlatformSettings)); - locator.Register(() => s_instance, typeof(IPlatformThreadingInterface)); - locator.Register(() => new SystemDialogImpl(), typeof (ISystemDialogImpl)); + PerspexLocator.CurrentMutable + .Bind().ToTransient() + .Bind().ToTransient() + .Bind().ToSingleton() + .Bind().ToConstant(CursorFactory.Instance) + .Bind().ToConstant(GtkKeyboardDevice.Instance) + .Bind().ToConstant(GtkMouseDevice.Instance) + .Bind().ToConstant(s_instance) + .Bind().ToConstant(s_instance) + .Bind().ToSingleton(); SharedPlatform.Register(); } diff --git a/src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj b/src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj index 20b96380b4..1d286b3bf0 100644 --- a/src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj +++ b/src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj @@ -44,9 +44,6 @@ ..\..\..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll - - ..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - diff --git a/src/Gtk/Perspex.Gtk/packages.config b/src/Gtk/Perspex.Gtk/packages.config index a530073d85..e54889bccb 100644 --- a/src/Gtk/Perspex.Gtk/packages.config +++ b/src/Gtk/Perspex.Gtk/packages.config @@ -1,7 +1,6 @@  - - - - + + + \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs index b75b07b289..4da18ba27f 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs @@ -20,7 +20,6 @@ using Perspex.Media.Imaging; using Perspex.Metadata; using Perspex.Platform; using Perspex.Styling; -using Splat; namespace Perspex.Markup.Xaml.Context { @@ -52,7 +51,7 @@ namespace Perspex.Markup.Xaml.Context foreach (var nsa in forcedAssemblies - .Concat(Locator.Current.GetService().GetLoadedAssemblies()) + .Concat(PerspexLocator.Current.GetService().GetLoadedAssemblies()) .Distinct() .SelectMany(asm => asm.GetCustomAttributes().Select(attr => new {asm, attr})) diff --git a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj index 6da087ac13..243e7b5e5a 100644 --- a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj +++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj @@ -291,9 +291,6 @@ ..\..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll - - ..\..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - ..\..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll diff --git a/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs b/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs index 65e1ce4f71..db54e08cc5 100644 --- a/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs +++ b/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs @@ -8,7 +8,6 @@ using System.Reflection; using OmniXaml; using Perspex.Markup.Xaml.Context; using Perspex.Platform; -using Splat; namespace Perspex.Markup.Xaml { @@ -57,7 +56,7 @@ namespace Perspex.Markup.Xaml // HACK: Currently Visual Studio is forcing us to change the extension of xaml files // in certain situations, so we try to load .xaml and if that's not found we try .paml. // Ideally we'd be able to use .xaml everywhere - var assetLocator = Locator.Current.GetService(); + var assetLocator = PerspexLocator.Current.GetService(); if (assetLocator == null) { throw new InvalidOperationException( @@ -86,7 +85,7 @@ namespace Perspex.Markup.Xaml /// The loaded object. public object Load(Uri uri, object rootInstance = null) { - var assetLocator = Locator.Current.GetService(); + var assetLocator = PerspexLocator.Current.GetService(); if (assetLocator == null) { diff --git a/src/Markup/Perspex.Markup.Xaml/packages.config b/src/Markup/Perspex.Markup.Xaml/packages.config index ffb9a430bf..7576d65eac 100644 --- a/src/Markup/Perspex.Markup.Xaml/packages.config +++ b/src/Markup/Perspex.Markup.Xaml/packages.config @@ -6,6 +6,5 @@ - \ No newline at end of file diff --git a/src/Perspex.Application/Application.cs b/src/Perspex.Application/Application.cs index 09ab0a892a..ac93f82fec 100644 --- a/src/Perspex.Application/Application.cs +++ b/src/Perspex.Application/Application.cs @@ -12,7 +12,6 @@ using Perspex.Layout; using Perspex.Rendering; using Perspex.Styling; using Perspex.Threading; -using Splat; namespace Perspex { @@ -40,7 +39,7 @@ namespace Perspex private DataTemplates _dataTemplates; private readonly Lazy _clipboard = - new Lazy(() => (IClipboard)Locator.Current.GetService(typeof(IClipboard))); + new Lazy(() => (IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard))); /// /// The styler that will be used to apply styles to controls. @@ -157,15 +156,16 @@ namespace Perspex FocusManager = new FocusManager(); InputManager = new InputManager(); - Locator.CurrentMutable.Register(() => new AccessKeyHandler(), typeof(IAccessKeyHandler)); - Locator.CurrentMutable.Register(() => this, typeof(IGlobalDataTemplates)); - Locator.CurrentMutable.Register(() => this, typeof(IGlobalStyles)); - Locator.CurrentMutable.Register(() => FocusManager, typeof(IFocusManager)); - Locator.CurrentMutable.Register(() => InputManager, typeof(IInputManager)); - Locator.CurrentMutable.Register(() => new KeyboardNavigationHandler(), typeof(IKeyboardNavigationHandler)); - Locator.CurrentMutable.Register(() => _styler, typeof(IStyler)); - Locator.CurrentMutable.Register(() => new LayoutManager(), typeof(ILayoutManager)); - Locator.CurrentMutable.Register(() => new RenderManager(), typeof(IRenderManager)); + PerspexLocator.CurrentMutable + .Bind().ToTransient() + .Bind().ToConstant(this) + .Bind().ToConstant(this) + .Bind().ToConstant(FocusManager) + .Bind().ToConstant(InputManager) + .Bind().ToTransient() + .Bind().ToConstant(_styler) + .Bind().ToTransient() + .Bind().ToTransient(); } /// diff --git a/src/Perspex.Application/Perspex.Application.csproj b/src/Perspex.Application/Perspex.Application.csproj index 9a16f9130b..c5fe995636 100644 --- a/src/Perspex.Application/Perspex.Application.csproj +++ b/src/Perspex.Application/Perspex.Application.csproj @@ -89,9 +89,6 @@ ..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Application/packages.config b/src/Perspex.Application/packages.config index 0913700f2d..d5af0dcd81 100644 --- a/src/Perspex.Application/packages.config +++ b/src/Perspex.Application/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Base/Perspex.Base.csproj b/src/Perspex.Base/Perspex.Base.csproj index f6fdace315..d90087add4 100644 --- a/src/Perspex.Base/Perspex.Base.csproj +++ b/src/Perspex.Base/Perspex.Base.csproj @@ -46,6 +46,7 @@ + @@ -93,9 +94,6 @@ ..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Base/PerspexLocator.cs b/src/Perspex.Base/PerspexLocator.cs new file mode 100644 index 0000000000..262ffda8d8 --- /dev/null +++ b/src/Perspex.Base/PerspexLocator.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; + +#pragma warning disable CS1591 // Enable me later + +namespace Perspex +{ + public class PerspexLocator : IPerspexDependencyResolver + { + private readonly IPerspexDependencyResolver _parentScope; + public static IPerspexDependencyResolver Current { get; set; } + public static PerspexLocator CurrentMutable { get; set; } + private readonly Dictionary> _registry = new Dictionary>(); + + static PerspexLocator() + { + Current = CurrentMutable = new PerspexLocator(); + } + + public PerspexLocator() + { + + } + + public PerspexLocator(IPerspexDependencyResolver parentScope) + { + _parentScope = parentScope; + } + + public object GetService(Type t) + { + Func rv; + if (_registry.TryGetValue(t, out rv)) + return rv(); + var parentRv = _parentScope?.GetService(t); + if (parentRv != null) + return parentRv; + throw new TypeLoadException("Unable to find registrations for service " + t); + } + + public class RegistrationHelper + { + private PerspexLocator _locator; + + public RegistrationHelper(PerspexLocator locator) + { + _locator = locator; + } + + public PerspexLocator ToConstant(TImpl constant) where TImpl : TService + { + _locator._registry[typeof (TService)] = () => constant; + return _locator; + } + + public PerspexLocator ToFunc(Func func) where TImlp : TService + { + _locator._registry[typeof (TService)] = () => func(); + return _locator; + } + + public PerspexLocator ToSingleton() where TImpl : class, TService, new() + { + TImpl instance = null; + return ToFunc(() => instance ?? (instance = new TImpl())); + } + + public PerspexLocator ToTransient() where TImpl : class, TService, new() => ToFunc(() => new TImpl()); + } + + public RegistrationHelper Bind() => new RegistrationHelper(this); + + + public PerspexLocator BindToSelf(T constant) + => Bind().ToConstant(constant); + + public PerspexLocator BindToSelfSingleton() where T : class, new() => Bind().ToSingleton(); + + class ResolverDisposable : IDisposable + { + private readonly IPerspexDependencyResolver _resolver; + private readonly PerspexLocator _mutable; + + public ResolverDisposable(IPerspexDependencyResolver resolver, PerspexLocator mutable) + { + _resolver = resolver; + _mutable = mutable; + } + + public void Dispose() + { + Current = _resolver; + CurrentMutable = _mutable; + } + } + + public static IDisposable EnterScope() + { + var d = new ResolverDisposable(Current, CurrentMutable); + Current = CurrentMutable = new PerspexLocator(Current); + return d; + + } + } + + public interface IPerspexDependencyResolver + { + object GetService(Type t); + } + + public static class LocatorExtensions + { + public static T GetService(this IPerspexDependencyResolver resolver) + { + return (T) resolver.GetService(typeof (T)); + } + } +} + diff --git a/src/Perspex.Base/Threading/DispatcherTimer.cs b/src/Perspex.Base/Threading/DispatcherTimer.cs index 21c3da0f8d..27b1a8cb36 100644 --- a/src/Perspex.Base/Threading/DispatcherTimer.cs +++ b/src/Perspex.Base/Threading/DispatcherTimer.cs @@ -4,7 +4,6 @@ using System; using System.Reactive.Disposables; using Perspex.Platform; -using Splat; namespace Perspex.Threading { @@ -175,7 +174,7 @@ namespace Perspex.Threading { if (!IsEnabled) { - IPlatformThreadingInterface threading = Locator.Current.GetService(); + IPlatformThreadingInterface threading = PerspexLocator.Current.GetService(); _timer = threading.StartTimer(Interval, InternalTick); } } @@ -187,7 +186,7 @@ namespace Perspex.Threading { if (IsEnabled) { - IPlatformThreadingInterface threading = Locator.Current.GetService(); + IPlatformThreadingInterface threading = PerspexLocator.Current.GetService(); _timer.Dispose(); _timer = null; } diff --git a/src/Perspex.Base/Threading/MainLoop.cs b/src/Perspex.Base/Threading/MainLoop.cs index c38de6e26b..b9d21d5ab5 100644 --- a/src/Perspex.Base/Threading/MainLoop.cs +++ b/src/Perspex.Base/Threading/MainLoop.cs @@ -7,7 +7,6 @@ using System.Threading; using System.Threading.Tasks; using Perspex.Platform; using Perspex.Threading; -using Splat; namespace Perspex.Win32.Threading { @@ -25,7 +24,7 @@ namespace Perspex.Win32.Threading /// static MainLoop() { - s_platform = Locator.Current.GetService(); + s_platform = PerspexLocator.Current.GetService(); } /// diff --git a/src/Perspex.Base/packages.config b/src/Perspex.Base/packages.config index e901739010..7d2a813bf7 100644 --- a/src/Perspex.Base/packages.config +++ b/src/Perspex.Base/packages.config @@ -6,5 +6,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Controls/Control.cs b/src/Perspex.Controls/Control.cs index 12ae649f91..901b744451 100644 --- a/src/Perspex.Controls/Control.cs +++ b/src/Perspex.Controls/Control.cs @@ -12,7 +12,6 @@ using Perspex.Interactivity; using Perspex.LogicalTree; using Perspex.Rendering; using Perspex.Styling; -using Splat; namespace Perspex.Controls { @@ -397,7 +396,7 @@ namespace Perspex.Controls { base.OnAttachedToVisualTree(root); - IStyler styler = Locator.Current.GetService(); + IStyler styler = PerspexLocator.Current.GetService(); styler.ApplyStyles(this); } diff --git a/src/Perspex.Controls/MenuItem.cs b/src/Perspex.Controls/MenuItem.cs index 2c9b7eaaba..99bb5cad01 100644 --- a/src/Perspex.Controls/MenuItem.cs +++ b/src/Perspex.Controls/MenuItem.cs @@ -14,7 +14,6 @@ using Perspex.Input; using Perspex.Interactivity; using Perspex.Threading; using Perspex.VisualTree; -using Splat; namespace Perspex.Controls { @@ -489,7 +488,7 @@ namespace Perspex.Controls /// /// A dependency resolver which returns a . /// - private class DependencyResolver : IDependencyResolver + private class DependencyResolver : IPerspexDependencyResolver { /// /// Gets the default instance of . @@ -509,7 +508,7 @@ namespace Perspex.Controls /// The service type. /// An optional contract. /// A service of the requested type. - public object GetService(Type serviceType, string contract = null) + public object GetService(Type serviceType) { if (serviceType == typeof(IAccessKeyHandler)) { @@ -517,20 +516,9 @@ namespace Perspex.Controls } else { - return Locator.Current.GetService(serviceType, contract); + return PerspexLocator.Current.GetService(serviceType); } } - - /// - /// Gets collection of services of the specified type. - /// - /// The service type. - /// An optional contract. - /// A collection of services of the requested type. - public IEnumerable GetServices(Type serviceType, string contract = null) - { - return Locator.Current.GetServices(serviceType, contract); - } } } } diff --git a/src/Perspex.Controls/Perspex.Controls.csproj b/src/Perspex.Controls/Perspex.Controls.csproj index f4d1332994..59267be10f 100644 --- a/src/Perspex.Controls/Perspex.Controls.csproj +++ b/src/Perspex.Controls/Perspex.Controls.csproj @@ -187,9 +187,6 @@ ..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs index 2a2917ace3..af28f72a39 100644 --- a/src/Perspex.Controls/Primitives/Popup.cs +++ b/src/Perspex.Controls/Primitives/Popup.cs @@ -5,7 +5,6 @@ using System; using Perspex.Interactivity; using Perspex.Rendering; using Perspex.VisualTree; -using Splat; namespace Perspex.Controls.Primitives { @@ -94,7 +93,7 @@ namespace Perspex.Controls.Primitives /// This property allows a client to customize the behaviour of the popup by injecting /// a specialized dependency resolver into the 's constructor. /// - public IDependencyResolver DependencyResolver + public IPerspexDependencyResolver DependencyResolver { get; set; diff --git a/src/Perspex.Controls/Primitives/PopupRoot.cs b/src/Perspex.Controls/Primitives/PopupRoot.cs index ee2db7dc0e..4e628f79f0 100644 --- a/src/Perspex.Controls/Primitives/PopupRoot.cs +++ b/src/Perspex.Controls/Primitives/PopupRoot.cs @@ -8,7 +8,6 @@ using Perspex.Interactivity; using Perspex.Media; using Perspex.Platform; using Perspex.VisualTree; -using Splat; namespace Perspex.Controls.Primitives { @@ -41,8 +40,8 @@ namespace Perspex.Controls.Primitives /// /// The dependency resolver to use. If null the default dependency resolver will be used. /// - public PopupRoot(IDependencyResolver dependencyResolver) - : base(Locator.Current.GetService(), dependencyResolver) + public PopupRoot(IPerspexDependencyResolver dependencyResolver) + : base(PerspexLocator.Current.GetService(), dependencyResolver) { GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x); } diff --git a/src/Perspex.Controls/SystemDialog.cs b/src/Perspex.Controls/SystemDialog.cs index ce424f31fa..6eae1e9e9d 100644 --- a/src/Perspex.Controls/SystemDialog.cs +++ b/src/Perspex.Controls/SystemDialog.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Threading.Tasks; using Perspex.Controls.Platform; -using Splat; namespace Perspex.Controls { @@ -20,7 +19,7 @@ namespace Perspex.Controls public async Task ShowAsync(Window window = null) => - ((await Locator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl)) ?? + ((await PerspexLocator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl)) ?? new string[0]).FirstOrDefault(); } @@ -29,7 +28,7 @@ namespace Perspex.Controls public bool AllowMultiple { get; set; } public Task ShowAsync(Window window = null) - => Locator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl); + => PerspexLocator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl); } public abstract class SystemDialog diff --git a/src/Perspex.Controls/Templates/DataTemplateExtensions.cs b/src/Perspex.Controls/Templates/DataTemplateExtensions.cs index 3fd09024cf..f99fe41d26 100644 --- a/src/Perspex.Controls/Templates/DataTemplateExtensions.cs +++ b/src/Perspex.Controls/Templates/DataTemplateExtensions.cs @@ -3,7 +3,6 @@ using System.Linq; using Perspex.LogicalTree; -using Splat; namespace Perspex.Controls.Templates { @@ -63,7 +62,7 @@ namespace Perspex.Controls.Templates } } - IGlobalDataTemplates global = Locator.Current.GetService(); + IGlobalDataTemplates global = PerspexLocator.Current.GetService(); if (global != null) { diff --git a/src/Perspex.Controls/TextBox.cs b/src/Perspex.Controls/TextBox.cs index fc3bc91585..e8eaf70a73 100644 --- a/src/Perspex.Controls/TextBox.cs +++ b/src/Perspex.Controls/TextBox.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using Perspex.Input.Platform; -using Splat; using System; using System.Collections.Generic; using System.Linq; @@ -150,13 +149,13 @@ namespace Perspex.Controls private async void Copy() { - await ((IClipboard)Locator.Current.GetService(typeof(IClipboard))) + await ((IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard))) .SetTextAsync(GetSelection()); } private async void Paste() { - var text = await ((IClipboard)Locator.Current.GetService(typeof(IClipboard))).GetTextAsync(); + var text = await ((IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard))).GetTextAsync(); if (text == null) { return; diff --git a/src/Perspex.Controls/TopLevel.cs b/src/Perspex.Controls/TopLevel.cs index 47e13e41ff..33a7eca9a2 100644 --- a/src/Perspex.Controls/TopLevel.cs +++ b/src/Perspex.Controls/TopLevel.cs @@ -12,7 +12,6 @@ using Perspex.Platform; using Perspex.Rendering; using Perspex.Styling; using Perspex.Threading; -using Splat; namespace Perspex.Controls { @@ -87,7 +86,7 @@ namespace Perspex.Controls /// /// The platform-specific window implementation. public TopLevel(ITopLevelImpl impl) - : this(impl, Locator.Current) + : this(impl, PerspexLocator.Current) { } @@ -98,7 +97,7 @@ namespace Perspex.Controls /// /// The dependency resolver to use. If null the default dependency resolver will be used. /// - public TopLevel(ITopLevelImpl impl, IDependencyResolver dependencyResolver) + public TopLevel(ITopLevelImpl impl, IPerspexDependencyResolver dependencyResolver) { if (impl == null) { @@ -108,7 +107,7 @@ namespace Perspex.Controls PlatformImpl = impl; - dependencyResolver = dependencyResolver ?? Locator.Current; + dependencyResolver = dependencyResolver ?? PerspexLocator.Current; var renderInterface = TryGetService(dependencyResolver); var styler = TryGetService(dependencyResolver); _accessKeyHandler = TryGetService(dependencyResolver); @@ -327,13 +326,13 @@ namespace Perspex.Controls } /// - /// Tries to get a service from an , throwing an + /// Tries to get a service from an , throwing an /// exception if not found. /// /// The service type. /// The resolver. /// The service. - private static T TryGetService(IDependencyResolver resolver) where T : class + private static T TryGetService(IPerspexDependencyResolver resolver) where T : class { var result = resolver.GetService(); diff --git a/src/Perspex.Controls/Window.cs b/src/Perspex.Controls/Window.cs index fb3fee2587..5b01d6c63b 100644 --- a/src/Perspex.Controls/Window.cs +++ b/src/Perspex.Controls/Window.cs @@ -8,7 +8,6 @@ using Perspex.Input; using Perspex.Media; using Perspex.Platform; using Perspex.Styling; -using Splat; namespace Perspex.Controls { @@ -72,7 +71,7 @@ namespace Perspex.Controls /// Initializes a new instance of the class. /// public Window() - : base(Locator.Current.GetService()) + : base(PerspexLocator.Current.GetService()) { _maxPlatformClientSize = this.PlatformImpl.MaxClientSize; } diff --git a/src/Perspex.Controls/packages.config b/src/Perspex.Controls/packages.config index e901739010..7d2a813bf7 100644 --- a/src/Perspex.Controls/packages.config +++ b/src/Perspex.Controls/packages.config @@ -6,5 +6,4 @@ - \ No newline at end of file diff --git a/src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs b/src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs index 26dcaeb442..0411c7e26e 100644 --- a/src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs +++ b/src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs @@ -9,7 +9,6 @@ using Perspex; using Perspex.Input.Platform; using Perspex.Media; using Perspex.Media.Imaging; -using Splat; using TheArtOfDev.HtmlRenderer.Adapters; using TheArtOfDev.HtmlRenderer.Adapters.Entities; using TheArtOfDev.HtmlRenderer.Perspex.Utilities; @@ -118,7 +117,7 @@ namespace TheArtOfDev.HtmlRenderer.Perspex.Adapters protected override void SetToClipboardInt(string text) { - Locator.Current.GetService().SetTextAsync(text); + PerspexLocator.Current.GetService().SetTextAsync(text); } protected override void SetToClipboardInt(RImage image) diff --git a/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj b/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj index ef8f2edb78..7167ab0a7f 100644 --- a/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj +++ b/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj @@ -172,9 +172,6 @@ - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll diff --git a/src/Perspex.HtmlRenderer/packages.config b/src/Perspex.HtmlRenderer/packages.config index c5594cb5ab..f23358716a 100644 --- a/src/Perspex.HtmlRenderer/packages.config +++ b/src/Perspex.HtmlRenderer/packages.config @@ -4,5 +4,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Input/Cursors.cs b/src/Perspex.Input/Cursors.cs index 2c4367d5c0..889cc68774 100644 --- a/src/Perspex.Input/Cursors.cs +++ b/src/Perspex.Input/Cursors.cs @@ -1,7 +1,6 @@ // Copyright (c) The Perspex Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. -using Splat; using System; using System.Collections.Generic; using System.Linq; @@ -50,7 +49,7 @@ namespace Perspex.Input public Cursor(StandardCursorType cursorType) : this( - ((IStandardCursorFactory)Locator.Current.GetService(typeof(IStandardCursorFactory))).GetCursor( + ((IStandardCursorFactory)PerspexLocator.Current.GetService(typeof(IStandardCursorFactory))).GetCursor( cursorType)) { } diff --git a/src/Perspex.Input/FocusManager.cs b/src/Perspex.Input/FocusManager.cs index 74fb29e683..945e9ad782 100644 --- a/src/Perspex.Input/FocusManager.cs +++ b/src/Perspex.Input/FocusManager.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using Perspex.Interactivity; using Perspex.VisualTree; -using Splat; namespace Perspex.Input { @@ -35,7 +34,7 @@ namespace Perspex.Input /// /// Gets the instance of the . /// - public static IFocusManager Instance => Locator.Current.GetService(); + public static IFocusManager Instance => PerspexLocator.Current.GetService(); /// /// Gets the currently focused . diff --git a/src/Perspex.Input/InputManager.cs b/src/Perspex.Input/InputManager.cs index 5b6338b084..eb25850d3d 100644 --- a/src/Perspex.Input/InputManager.cs +++ b/src/Perspex.Input/InputManager.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using System.Reactive.Subjects; using Perspex.Input.Raw; -using Splat; namespace Perspex.Input { @@ -16,7 +15,7 @@ namespace Perspex.Input private readonly Subject _postProcess = new Subject(); - public static IInputManager Instance => Locator.Current.GetService(); + public static IInputManager Instance => PerspexLocator.Current.GetService(); public IObservable RawEventReceived => _rawEventReceived; diff --git a/src/Perspex.Input/KeyboardDevice.cs b/src/Perspex.Input/KeyboardDevice.cs index 8aff90bae4..390e925ce5 100644 --- a/src/Perspex.Input/KeyboardDevice.cs +++ b/src/Perspex.Input/KeyboardDevice.cs @@ -8,7 +8,6 @@ using System.Reactive.Linq; using System.Runtime.CompilerServices; using Perspex.Input.Raw; using Perspex.Interactivity; -using Splat; namespace Perspex.Input { @@ -26,11 +25,11 @@ namespace Perspex.Input public event PropertyChangedEventHandler PropertyChanged; - public static IKeyboardDevice Instance => Locator.Current.GetService(); + public static IKeyboardDevice Instance => PerspexLocator.Current.GetService(); - public IInputManager InputManager => Locator.Current.GetService(); + public IInputManager InputManager => PerspexLocator.Current.GetService(); - public IFocusManager FocusManager => Locator.Current.GetService(); + public IFocusManager FocusManager => PerspexLocator.Current.GetService(); public IInputElement FocusedElement { diff --git a/src/Perspex.Input/MouseDevice.cs b/src/Perspex.Input/MouseDevice.cs index 9b0fb17ea6..6cde0d8faf 100644 --- a/src/Perspex.Input/MouseDevice.cs +++ b/src/Perspex.Input/MouseDevice.cs @@ -9,7 +9,6 @@ using Perspex.Input.Raw; using Perspex.Interactivity; using Perspex.Platform; using Perspex.VisualTree; -using Splat; namespace Perspex.Input { @@ -31,7 +30,7 @@ namespace Perspex.Input .Subscribe(ProcessRawEvent); } - public static IMouseDevice Instance => Locator.Current.GetService(); + public static IMouseDevice Instance => PerspexLocator.Current.GetService(); public IInputElement Captured { @@ -39,7 +38,7 @@ namespace Perspex.Input protected set; } - public IInputManager InputManager => Locator.Current.GetService(); + public IInputManager InputManager => PerspexLocator.Current.GetService(); public Point Position { @@ -107,7 +106,7 @@ namespace Perspex.Input if (source != null) { - var settings = Locator.Current.GetService(); + var settings = PerspexLocator.Current.GetService(); var doubleClickTime = settings.DoubleClickTime.TotalMilliseconds; if (!_lastClickRect.Contains(p) || timestamp - _lastClickTime > doubleClickTime) diff --git a/src/Perspex.Input/Perspex.Input.csproj b/src/Perspex.Input/Perspex.Input.csproj index e9233cbf25..366d7c4711 100644 --- a/src/Perspex.Input/Perspex.Input.csproj +++ b/src/Perspex.Input/Perspex.Input.csproj @@ -126,9 +126,6 @@ ..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Input/packages.config b/src/Perspex.Input/packages.config index 0913700f2d..d5af0dcd81 100644 --- a/src/Perspex.Input/packages.config +++ b/src/Perspex.Input/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Interactivity/Perspex.Interactivity.csproj b/src/Perspex.Interactivity/Perspex.Interactivity.csproj index 1f18564d89..c67efb6c11 100644 --- a/src/Perspex.Interactivity/Perspex.Interactivity.csproj +++ b/src/Perspex.Interactivity/Perspex.Interactivity.csproj @@ -81,9 +81,6 @@ ..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Interactivity/packages.config b/src/Perspex.Interactivity/packages.config index 0913700f2d..d5af0dcd81 100644 --- a/src/Perspex.Interactivity/packages.config +++ b/src/Perspex.Interactivity/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Layout/Perspex.Layout.csproj b/src/Perspex.Layout/Perspex.Layout.csproj index f20320f026..50c6338217 100644 --- a/src/Perspex.Layout/Perspex.Layout.csproj +++ b/src/Perspex.Layout/Perspex.Layout.csproj @@ -80,9 +80,6 @@ ..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Layout/packages.config b/src/Perspex.Layout/packages.config index e901739010..7d2a813bf7 100644 --- a/src/Perspex.Layout/packages.config +++ b/src/Perspex.Layout/packages.config @@ -6,5 +6,4 @@ - \ No newline at end of file diff --git a/src/Perspex.SceneGraph/Media/EllipseGeometry.cs b/src/Perspex.SceneGraph/Media/EllipseGeometry.cs index 142b8b7f6b..d8887ac035 100644 --- a/src/Perspex.SceneGraph/Media/EllipseGeometry.cs +++ b/src/Perspex.SceneGraph/Media/EllipseGeometry.cs @@ -3,7 +3,6 @@ using System; using Perspex.Platform; -using Splat; namespace Perspex.Media { @@ -18,7 +17,7 @@ namespace Perspex.Media /// The rectangle that the ellipse should fill. public EllipseGeometry(Rect rect) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); IStreamGeometryImpl impl = factory.CreateStreamGeometry(); using (IStreamGeometryContextImpl ctx = impl.Open()) diff --git a/src/Perspex.SceneGraph/Media/FormattedText.cs b/src/Perspex.SceneGraph/Media/FormattedText.cs index 0d8b4eb298..b8e8c5ddee 100644 --- a/src/Perspex.SceneGraph/Media/FormattedText.cs +++ b/src/Perspex.SceneGraph/Media/FormattedText.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using Perspex.Platform; -using Splat; namespace Perspex.Media { @@ -37,7 +36,7 @@ namespace Perspex.Media FontWeight = fontWeight; TextAlignment = textAlignment; - var platform = Locator.Current.GetService(); + var platform = PerspexLocator.Current.GetService(); PlatformImpl = platform.CreateFormattedText( text, diff --git a/src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs b/src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs index 92ec2ac1b9..55b25738ad 100644 --- a/src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs +++ b/src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs @@ -3,7 +3,6 @@ using System.IO; using Perspex.Platform; -using Splat; namespace Perspex.Media.Imaging { @@ -18,7 +17,7 @@ namespace Perspex.Media.Imaging /// The filename of the bitmap. public Bitmap(string fileName) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); PlatformImpl = factory.LoadBitmap(fileName); } @@ -28,7 +27,7 @@ namespace Perspex.Media.Imaging /// The stream to read the bitmap from. public Bitmap(Stream stream) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); PlatformImpl = factory.LoadBitmap(stream); } @@ -39,7 +38,7 @@ namespace Perspex.Media.Imaging /// The height of the bitmap, in pixels. public Bitmap(int width, int height) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); PlatformImpl = factory.CreateBitmap(width, height); } diff --git a/src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs b/src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs index 6637ffc5d4..90b83dff6b 100644 --- a/src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs +++ b/src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs @@ -3,7 +3,6 @@ using System; using Perspex.Platform; -using Splat; namespace Perspex.Media.Imaging { @@ -55,7 +54,7 @@ namespace Perspex.Media.Imaging /// The platform-specific implementation. private static IBitmapImpl CreateImpl(int width, int height) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); return factory.CreateRenderTargetBitmap(width, height); } } diff --git a/src/Perspex.SceneGraph/Media/RectangleGeometry.cs b/src/Perspex.SceneGraph/Media/RectangleGeometry.cs index fabc354cdf..190d467127 100644 --- a/src/Perspex.SceneGraph/Media/RectangleGeometry.cs +++ b/src/Perspex.SceneGraph/Media/RectangleGeometry.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using Perspex.Platform; -using Splat; namespace Perspex.Media { @@ -17,7 +16,7 @@ namespace Perspex.Media /// The rectangle bounds. public RectangleGeometry(Rect rect) { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); IStreamGeometryImpl impl = factory.CreateStreamGeometry(); using (IStreamGeometryContextImpl context = impl.Open()) diff --git a/src/Perspex.SceneGraph/Media/StreamGeometry.cs b/src/Perspex.SceneGraph/Media/StreamGeometry.cs index 8d61d2c31a..4d0b353f5d 100644 --- a/src/Perspex.SceneGraph/Media/StreamGeometry.cs +++ b/src/Perspex.SceneGraph/Media/StreamGeometry.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using Perspex.Platform; -using Splat; namespace Perspex.Media { @@ -16,7 +15,7 @@ namespace Perspex.Media /// public StreamGeometry() { - IPlatformRenderInterface factory = Locator.Current.GetService(); + IPlatformRenderInterface factory = PerspexLocator.Current.GetService(); PlatformImpl = factory.CreateStreamGeometry(); } diff --git a/src/Perspex.SceneGraph/Perspex.SceneGraph.csproj b/src/Perspex.SceneGraph/Perspex.SceneGraph.csproj index 4cf3651824..4b8c5c3778 100644 --- a/src/Perspex.SceneGraph/Perspex.SceneGraph.csproj +++ b/src/Perspex.SceneGraph/Perspex.SceneGraph.csproj @@ -143,9 +143,6 @@ ..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.SceneGraph/packages.config b/src/Perspex.SceneGraph/packages.config index e901739010..7d2a813bf7 100644 --- a/src/Perspex.SceneGraph/packages.config +++ b/src/Perspex.SceneGraph/packages.config @@ -6,5 +6,4 @@ - \ No newline at end of file diff --git a/src/Perspex.Styling/Perspex.Styling.csproj b/src/Perspex.Styling/Perspex.Styling.csproj index cd9816f9fc..c0776e27c2 100644 --- a/src/Perspex.Styling/Perspex.Styling.csproj +++ b/src/Perspex.Styling/Perspex.Styling.csproj @@ -77,9 +77,6 @@ ..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Styling/Styling/Styler.cs b/src/Perspex.Styling/Styling/Styler.cs index 67f8bc537f..d9780de6e6 100644 --- a/src/Perspex.Styling/Styling/Styler.cs +++ b/src/Perspex.Styling/Styling/Styler.cs @@ -4,7 +4,6 @@ using System; using System.Linq; using Perspex.VisualTree; -using Splat; namespace Perspex.Styling { @@ -17,7 +16,7 @@ namespace Perspex.Styling .GetSelfAndVisualAncestors() .OfType() .FirstOrDefault(); - IGlobalStyles global = Locator.Current.GetService(); + IGlobalStyles global = PerspexLocator.Current.GetService(); if (global != null) { diff --git a/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj b/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj index 3b8d4114a6..4c6218f1b9 100644 --- a/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj +++ b/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj @@ -118,9 +118,6 @@ ..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll - - ..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - diff --git a/src/Perspex.Themes.Default/packages.config b/src/Perspex.Themes.Default/packages.config index 0913700f2d..d5af0dcd81 100644 --- a/src/Perspex.Themes.Default/packages.config +++ b/src/Perspex.Themes.Default/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/src/Shared/PlatformSupport/SharedPlatform.cs b/src/Shared/PlatformSupport/SharedPlatform.cs index 3a6680e64d..33f8b54332 100644 --- a/src/Shared/PlatformSupport/SharedPlatform.cs +++ b/src/Shared/PlatformSupport/SharedPlatform.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Text; using Perspex.Platform; -using Splat; namespace Perspex.Shared.PlatformSupport { @@ -10,9 +9,9 @@ namespace Perspex.Shared.PlatformSupport { public static void Register() { - var locator = Locator.CurrentMutable; - locator.Register(() => new PclPlatformWrapper(), typeof(IPclPlatformWrapper)); - locator.RegisterConstant(new AssetLoader(), typeof(IAssetLoader)); + PerspexLocator.CurrentMutable + .Bind().ToSingleton() + .Bind().ToSingleton(); } } } diff --git a/src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs b/src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs index 31b0ff34a1..9005a9ffe3 100644 --- a/src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs +++ b/src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs @@ -6,7 +6,6 @@ using System.IO; using Perspex.Direct2D1.Media; using Perspex.Media; using Perspex.Platform; -using Splat; namespace Perspex.Direct2D1 { @@ -20,14 +19,11 @@ namespace Perspex.Direct2D1 private static readonly SharpDX.WIC.ImagingFactory s_imagingFactory = new SharpDX.WIC.ImagingFactory(); - public static void Initialize() - { - var locator = Locator.CurrentMutable; - locator.Register(() => s_instance, typeof(IPlatformRenderInterface)); - locator.Register(() => s_d2D1Factory, typeof(SharpDX.Direct2D1.Factory)); - locator.Register(() => s_dwfactory, typeof(SharpDX.DirectWrite.Factory)); - locator.Register(() => s_imagingFactory, typeof(SharpDX.WIC.ImagingFactory)); - } + public static void Initialize() => PerspexLocator.CurrentMutable + .Bind().ToConstant(s_instance) + .BindToSelf(s_d2D1Factory) + .BindToSelf(s_dwfactory) + .BindToSelf(s_imagingFactory); public IBitmapImpl CreateBitmap(int width, int height) { diff --git a/src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs b/src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs index dd40e507b5..6ace607107 100644 --- a/src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs +++ b/src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using Perspex.Media; using Perspex.Platform; -using Splat; using DWrite = SharpDX.DirectWrite; namespace Perspex.Direct2D1.Media @@ -21,7 +20,7 @@ namespace Perspex.Direct2D1.Media TextAlignment textAlignment, FontWeight fontWeight) { - var factory = Locator.Current.GetService(); + var factory = PerspexLocator.Current.GetService(); var format = new DWrite.TextFormat( factory, diff --git a/src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs b/src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs index 2d1665b27b..79df8d3f67 100644 --- a/src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs +++ b/src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs @@ -3,7 +3,6 @@ using Perspex.Platform; using SharpDX.Direct2D1; -using Splat; namespace Perspex.Direct2D1.Media { @@ -59,7 +58,7 @@ namespace Perspex.Direct2D1.Media if (!value.IsIdentity) { - Factory factory = Locator.Current.GetService(); + Factory factory = PerspexLocator.Current.GetService(); _transformed = new TransformedGeometry( factory, DefiningGeometry, diff --git a/src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs b/src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs index 022a53f8c4..0b91d561b0 100644 --- a/src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs +++ b/src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs @@ -4,7 +4,6 @@ using Perspex.Media; using Perspex.Platform; using SharpDX.Direct2D1; -using Splat; using D2DGeometry = SharpDX.Direct2D1.Geometry; namespace Perspex.Direct2D1.Media @@ -21,7 +20,7 @@ namespace Perspex.Direct2D1.Media /// public StreamGeometryImpl() { - Factory factory = Locator.Current.GetService(); + Factory factory = PerspexLocator.Current.GetService(); _path = new PathGeometry(factory); } @@ -46,7 +45,7 @@ namespace Perspex.Direct2D1.Media /// A cloned geometry. public IStreamGeometryImpl Clone() { - Factory factory = Locator.Current.GetService(); + Factory factory = PerspexLocator.Current.GetService(); var result = new PathGeometry(factory); var sink = result.Open(); _path.Stream(sink); diff --git a/src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj b/src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj index 9a981c3bf1..f352a6d7a8 100644 --- a/src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj +++ b/src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj @@ -64,9 +64,6 @@ ..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll - - ..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - diff --git a/src/Windows/Perspex.Direct2D1/Renderer.cs b/src/Windows/Perspex.Direct2D1/Renderer.cs index ca628b08a6..b112dfea65 100644 --- a/src/Windows/Perspex.Direct2D1/Renderer.cs +++ b/src/Windows/Perspex.Direct2D1/Renderer.cs @@ -8,7 +8,6 @@ using Perspex.Platform; using Perspex.Rendering; using SharpDX; using SharpDX.Direct2D1; -using Splat; using DwFactory = SharpDX.DirectWrite.Factory; namespace Perspex.Direct2D1 @@ -28,8 +27,8 @@ namespace Perspex.Direct2D1 /// The height of the window. public Renderer(IntPtr hwnd, double width, double height) { - Direct2DFactory = Locator.Current.GetService(); - DirectWriteFactory = Locator.Current.GetService(); + Direct2DFactory = PerspexLocator.Current.GetService(); + DirectWriteFactory = PerspexLocator.Current.GetService(); RenderTargetProperties renderTargetProperties = new RenderTargetProperties { @@ -54,8 +53,8 @@ namespace Perspex.Direct2D1 /// The render target. public Renderer(RenderTarget renderTarget) { - Direct2DFactory = Locator.Current.GetService(); - DirectWriteFactory = Locator.Current.GetService(); + Direct2DFactory = PerspexLocator.Current.GetService(); + DirectWriteFactory = PerspexLocator.Current.GetService(); _renderTarget = renderTarget; } diff --git a/src/Windows/Perspex.Direct2D1/packages.config b/src/Windows/Perspex.Direct2D1/packages.config index cbf7015309..0c1b74e828 100644 --- a/src/Windows/Perspex.Direct2D1/packages.config +++ b/src/Windows/Perspex.Direct2D1/packages.config @@ -6,5 +6,4 @@ - \ No newline at end of file diff --git a/src/Windows/Perspex.Win32/Perspex.Win32.csproj b/src/Windows/Perspex.Win32/Perspex.Win32.csproj index 8c84a7a307..29adac0267 100644 --- a/src/Windows/Perspex.Win32/Perspex.Win32.csproj +++ b/src/Windows/Perspex.Win32/Perspex.Win32.csproj @@ -58,9 +58,6 @@ ..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll - - ..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - diff --git a/src/Windows/Perspex.Win32/Win32Platform.cs b/src/Windows/Perspex.Win32/Win32Platform.cs index 34a0cda13a..c513fbf97e 100644 --- a/src/Windows/Perspex.Win32/Win32Platform.cs +++ b/src/Windows/Perspex.Win32/Win32Platform.cs @@ -14,7 +14,6 @@ using Perspex.Platform; using Perspex.Shared.PlatformSupport; using Perspex.Win32.Input; using Perspex.Win32.Interop; -using Splat; namespace Perspex.Win32 { @@ -41,29 +40,28 @@ namespace Perspex.Win32 private static void InitializeInternal() { - var locator = Locator.CurrentMutable; - locator.Register(() => new SystemDialogImpl(), typeof (ISystemDialogImpl)); - locator.Register(() => new PopupImpl(), typeof(IPopupImpl)); - locator.Register(() => new ClipboardImpl(), typeof(IClipboard)); - locator.Register(() => WindowsKeyboardDevice.Instance, typeof(IKeyboardDevice)); - locator.Register(() => WindowsMouseDevice.Instance, typeof(IMouseDevice)); - locator.Register(() => CursorFactory.Instance, typeof(IStandardCursorFactory)); - locator.Register(() => s_instance, typeof(IPlatformSettings)); - locator.Register(() => s_instance, typeof(IPlatformThreadingInterface)); + PerspexLocator.CurrentMutable + .Bind().ToTransient() + .Bind().ToSingleton() + .Bind().ToConstant(CursorFactory.Instance) + .Bind().ToConstant(WindowsKeyboardDevice.Instance) + .Bind().ToConstant(WindowsMouseDevice.Instance) + .Bind().ToConstant(s_instance) + .Bind().ToConstant(s_instance) + .Bind().ToSingleton(); + SharedPlatform.Register(); } public static void Initialize() { - var locator = Locator.CurrentMutable; - locator.Register(() => new WindowImpl(), typeof(IWindowImpl)); + PerspexLocator.CurrentMutable.Bind().ToTransient(); InitializeInternal(); } public static void InitializeEmbedded() { - var locator = Locator.CurrentMutable; - locator.Register(() => new EmbeddedWindowImpl(), typeof(IWindowImpl)); + PerspexLocator.CurrentMutable.Bind().ToTransient(); InitializeInternal(); } diff --git a/src/Windows/Perspex.Win32/packages.config b/src/Windows/Perspex.Win32/packages.config index db96d1825a..571e4fe023 100644 --- a/src/Windows/Perspex.Win32/packages.config +++ b/src/Windows/Perspex.Win32/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj b/tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj index e4f9b39569..fe60b3f768 100644 --- a/tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj +++ b/tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj @@ -47,9 +47,6 @@ ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll diff --git a/tests/Perspex.Base.UnitTests/packages.config b/tests/Perspex.Base.UnitTests/packages.config index 4f02ad6cd2..b87bf5fff7 100644 --- a/tests/Perspex.Base.UnitTests/packages.config +++ b/tests/Perspex.Base.UnitTests/packages.config @@ -3,7 +3,6 @@ - diff --git a/tests/Perspex.Controls.UnitTests/ContentControlTests.cs b/tests/Perspex.Controls.UnitTests/ContentControlTests.cs index 6c5b6bc59f..a946e91d5b 100644 --- a/tests/Perspex.Controls.UnitTests/ContentControlTests.cs +++ b/tests/Perspex.Controls.UnitTests/ContentControlTests.cs @@ -13,7 +13,6 @@ using Perspex.Styling; using Perspex.VisualTree; using Ploeh.AutoFixture; using Ploeh.AutoFixture.AutoMoq; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests @@ -49,7 +48,7 @@ namespace Perspex.Controls.UnitTests var target = new ContentControl(); var styler = new Mock(); - Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); + PerspexLocator.CurrentMutable.Bind().ToConstant(styler.Object); target.Content = "Foo"; target.Template = GetTemplate(); root.Child = target; @@ -281,10 +280,11 @@ namespace Perspex.Controls.UnitTests private IDisposable RegisterServices() { - var result = Locator.CurrentMutable.WithResolver(); + var result = PerspexLocator.EnterScope(); var fixture = new Fixture().Customize(new AutoMoqCustomization()); var renderInterface = fixture.Create(); - Locator.CurrentMutable.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); + PerspexLocator.CurrentMutable + .Bind().ToConstant(renderInterface); return result; } } diff --git a/tests/Perspex.Controls.UnitTests/ControlTests.cs b/tests/Perspex.Controls.UnitTests/ControlTests.cs index 202226a67d..4a801fc0e9 100644 --- a/tests/Perspex.Controls.UnitTests/ControlTests.cs +++ b/tests/Perspex.Controls.UnitTests/ControlTests.cs @@ -7,7 +7,6 @@ using Perspex.Layout; using Perspex.Platform; using Perspex.Rendering; using Perspex.Styling; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests @@ -25,13 +24,13 @@ namespace Perspex.Controls.UnitTests [Fact] public void Adding_Control_To_IRenderRoot_Should_Style_Control() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { var root = new TestRoot(); var target = new Control(); var styler = new Mock(); - Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); + PerspexLocator.CurrentMutable.Bind().ToConstant(styler.Object); root.Child = target; @@ -42,7 +41,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Adding_Tree_To_ILayoutRoot_Should_Style_Controls() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { var root = new TestRoot(); var parent = new Border(); @@ -50,7 +49,7 @@ namespace Perspex.Controls.UnitTests var grandchild = new Control(); var styler = new Mock(); - Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); + PerspexLocator.CurrentMutable.Bind().ToConstant(styler.Object); parent.Child = child; child.Child = grandchild; diff --git a/tests/Perspex.Controls.UnitTests/DropDownTests.cs b/tests/Perspex.Controls.UnitTests/DropDownTests.cs index ed5bebdcf7..a60f0fe86a 100644 --- a/tests/Perspex.Controls.UnitTests/DropDownTests.cs +++ b/tests/Perspex.Controls.UnitTests/DropDownTests.cs @@ -9,7 +9,6 @@ using Perspex.Controls.Templates; using Perspex.Platform; using Ploeh.AutoFixture; using Ploeh.AutoFixture.AutoMoq; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests @@ -58,10 +57,11 @@ namespace Perspex.Controls.UnitTests private IDisposable RegisterServices() { - var result = Locator.CurrentMutable.WithResolver(); + var result = PerspexLocator.EnterScope(); var fixture = new Fixture().Customize(new AutoMoqCustomization()); var renderInterface = fixture.Create(); - Locator.CurrentMutable.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); + PerspexLocator.CurrentMutable.Bind().ToConstant(renderInterface); + return result; } } diff --git a/tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj b/tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj index 3389497951..6e31a61a8e 100644 --- a/tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj +++ b/tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj @@ -59,9 +59,6 @@ ..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll diff --git a/tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs b/tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs index 229f31c1f2..30ed62dca0 100644 --- a/tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs +++ b/tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs @@ -13,7 +13,6 @@ using Perspex.LogicalTree; using Perspex.Platform; using Perspex.Styling; using Perspex.VisualTree; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests.Primitives @@ -248,7 +247,7 @@ namespace Perspex.Controls.UnitTests.Primitives private static IDisposable CreateServices() { - var result = Locator.Current.WithResolver(); + var result = PerspexLocator.EnterScope(); var styles = new Styles { @@ -264,11 +263,14 @@ namespace Perspex.Controls.UnitTests.Primitives var globalStyles = new Mock(); globalStyles.Setup(x => x.Styles).Returns(styles); - Locator.CurrentMutable.Register(() => globalStyles.Object, typeof(IGlobalStyles)); - Locator.CurrentMutable.Register(() => new LayoutManager(), typeof(ILayoutManager)); - Locator.CurrentMutable.Register(() => new Mock().Object, typeof(IPlatformThreadingInterface)); - Locator.CurrentMutable.Register(() => new Mock().Object, typeof(IPopupImpl)); - Locator.CurrentMutable.Register(() => new Styler(), typeof(IStyler)); + + PerspexLocator.CurrentMutable + .Bind().ToTransient() + .Bind().ToFunc(() => globalStyles.Object) + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(new Mock().Object) + .Bind().ToTransient(); + return result; } diff --git a/tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs b/tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs index 7654531089..6177574dc0 100644 --- a/tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs +++ b/tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs @@ -9,7 +9,6 @@ using Perspex.Controls.Primitives; using Perspex.Controls.Templates; using Perspex.Styling; using Perspex.VisualTree; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests @@ -143,10 +142,11 @@ namespace Perspex.Controls.UnitTests [Fact] public void Templated_Children_Should_Be_Styled() { - using (Locator.Current.WithResolver()) + using (PerspexLocator.EnterScope()) { var styler = new Mock(); - Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); + + PerspexLocator.CurrentMutable.Bind().ToConstant(styler.Object); TestTemplatedControl target; diff --git a/tests/Perspex.Controls.UnitTests/TopLevelTests.cs b/tests/Perspex.Controls.UnitTests/TopLevelTests.cs index 5e7a7531fb..899d5da151 100644 --- a/tests/Perspex.Controls.UnitTests/TopLevelTests.cs +++ b/tests/Perspex.Controls.UnitTests/TopLevelTests.cs @@ -14,7 +14,6 @@ using Perspex.Rendering; using Perspex.Styling; using Ploeh.AutoFixture; using Ploeh.AutoFixture.AutoMoq; -using Splat; using Xunit; namespace Perspex.Controls.UnitTests @@ -24,7 +23,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void ClientSize_Should_Be_Set_On_Construction() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -40,7 +39,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Width_Should_Not_Be_Set_On_Construction() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -56,7 +55,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Height_Should_Not_Be_Set_On_Construction() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -72,7 +71,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Layout_Pass_Should_Not_Be_Automatically_Scheduled() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -88,10 +87,10 @@ namespace Perspex.Controls.UnitTests [Fact] public void Bounds_Should_Be_Set_After_Layout_Pass() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); - Locator.CurrentMutable.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); + PerspexLocator.CurrentMutable.Bind().ToConstant(new LayoutManager()); var impl = new Mock(); impl.SetupProperty(x => x.ClientSize); @@ -120,10 +119,10 @@ namespace Perspex.Controls.UnitTests [Fact] public void Impl_ClientSize_Should_Be_Set_After_Layout_Pass() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); - Locator.CurrentMutable.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); + PerspexLocator.CurrentMutable.Bind().ToConstant(new LayoutManager()); var impl = new Mock(); @@ -150,7 +149,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Width_And_Height_Should_Not_Be_Set_After_Layout_Pass() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -168,11 +167,11 @@ namespace Perspex.Controls.UnitTests [Fact] public void Render_Should_Be_Scheduled_After_Layout_Pass() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); var completed = new Subject(); - var layoutManagerMock = Mock.Get(Locator.Current.GetService()); + var layoutManagerMock = Mock.Get(PerspexLocator.Current.GetService()); layoutManagerMock.Setup(x => x.LayoutCompleted).Returns(completed); var impl = new Mock(); @@ -181,7 +180,7 @@ namespace Perspex.Controls.UnitTests var target = new TestTopLevel(impl.Object); completed.OnNext(Unit.Default); - var renderManagerMock = Mock.Get(Locator.Current.GetService()); + var renderManagerMock = Mock.Get(PerspexLocator.Current.GetService()); renderManagerMock.Verify(x => x.InvalidateRender(target)); } } @@ -189,7 +188,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Width_And_Height_Should_Be_Set_After_Window_Resize_Notification() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -209,7 +208,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Activate_Should_Call_Impl_Activate() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -225,7 +224,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Impl_Activate_Should_Call_Raise_Activated_Event() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -245,7 +244,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Impl_Close_Should_Call_Raise_Closed_Event() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -265,7 +264,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Impl_Deactivate_Should_Call_Raise_Activated_Event() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -285,7 +284,7 @@ namespace Perspex.Controls.UnitTests [Fact] public void Impl_Input_Should_Pass_Input_To_InputManager() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { RegisterServices(); @@ -308,7 +307,7 @@ namespace Perspex.Controls.UnitTests private void RegisterServices() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); - var l = Locator.CurrentMutable; + var l = PerspexLocator.CurrentMutable; var formattedText = fixture.Create(); var globalStyles = new Mock(); @@ -320,14 +319,16 @@ namespace Perspex.Controls.UnitTests globalStyles.Setup(x => x.Styles).Returns(theme); - l.RegisterConstant(new Mock().Object, typeof(IInputManager)); - l.RegisterConstant(new Mock().Object, typeof(IFocusManager)); - l.RegisterConstant(globalStyles.Object, typeof(IGlobalStyles)); - l.RegisterConstant(layoutManager, typeof(ILayoutManager)); - l.RegisterConstant(new Mock().Object, typeof(IPlatformThreadingInterface)); - l.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); - l.RegisterConstant(renderManager, typeof(IRenderManager)); - l.RegisterConstant(new Styler(), typeof(IStyler)); + + PerspexLocator.CurrentMutable + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(globalStyles.Object) + .Bind().ToConstant(layoutManager) + .Bind().ToConstant(renderInterface) + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(renderManager) + .Bind().ToConstant(new Styler()); } private class TestTopLevel : TopLevel diff --git a/tests/Perspex.Controls.UnitTests/packages.config b/tests/Perspex.Controls.UnitTests/packages.config index b0d4f14c88..3c8dccc01e 100644 --- a/tests/Perspex.Controls.UnitTests/packages.config +++ b/tests/Perspex.Controls.UnitTests/packages.config @@ -8,7 +8,6 @@ - diff --git a/tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs b/tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs index cd5d318117..11747e7f04 100644 --- a/tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs +++ b/tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs @@ -4,7 +4,6 @@ using Perspex.Controls.Shapes; using Perspex.Layout; using Perspex.Media; -using Splat; using Xunit; namespace Perspex.Direct2D1.UnitTests.Controls.Shapes @@ -16,7 +15,7 @@ namespace Perspex.Direct2D1.UnitTests.Controls.Shapes [Fact] public void Should_Measure_Expander_Triangle_Correctly() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { Direct2D1Platform.Initialize(); @@ -39,7 +38,7 @@ namespace Perspex.Direct2D1.UnitTests.Controls.Shapes [Fact] public void Should_Measure_Expander_Triangle_With_Stroke_Correctly() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { Direct2D1Platform.Initialize(); diff --git a/tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs b/tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs index de46378d00..e87c15eb19 100644 --- a/tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs +++ b/tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using Perspex.Media; -using Splat; using Xunit; namespace Perspex.Direct2D1.UnitTests.Media @@ -14,7 +13,7 @@ namespace Perspex.Direct2D1.UnitTests.Media [Fact] public void Should_Measure_Expander_Triangle_Correctly() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { Direct2D1Platform.Initialize(); @@ -27,7 +26,7 @@ namespace Perspex.Direct2D1.UnitTests.Media [Fact] public void Should_Measure_Expander_Triangle_With_Stroke_Correctly() { - using (Locator.CurrentMutable.WithResolver()) + using (PerspexLocator.EnterScope()) { Direct2D1Platform.Initialize(); diff --git a/tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj b/tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj index 24ad4cca75..2e5748bf0f 100644 --- a/tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj +++ b/tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj @@ -44,9 +44,6 @@ - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll diff --git a/tests/Perspex.Direct2D1.UnitTests/packages.config b/tests/Perspex.Direct2D1.UnitTests/packages.config index 979ca3a8ef..ce1d9d0407 100644 --- a/tests/Perspex.Direct2D1.UnitTests/packages.config +++ b/tests/Perspex.Direct2D1.UnitTests/packages.config @@ -1,6 +1,5 @@  - diff --git a/tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj b/tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj index ddfa8ad1a7..e63ccac17e 100644 --- a/tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj +++ b/tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj @@ -44,9 +44,6 @@ - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll diff --git a/tests/Perspex.Input.UnitTests/packages.config b/tests/Perspex.Input.UnitTests/packages.config index 979ca3a8ef..ce1d9d0407 100644 --- a/tests/Perspex.Input.UnitTests/packages.config +++ b/tests/Perspex.Input.UnitTests/packages.config @@ -1,6 +1,5 @@  - diff --git a/tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj b/tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj index 3ea7c3f38c..fee8683fa4 100644 --- a/tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj +++ b/tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj @@ -49,9 +49,6 @@ ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll diff --git a/tests/Perspex.Interactivity.UnitTests/packages.config b/tests/Perspex.Interactivity.UnitTests/packages.config index 979ca3a8ef..ce1d9d0407 100644 --- a/tests/Perspex.Interactivity.UnitTests/packages.config +++ b/tests/Perspex.Interactivity.UnitTests/packages.config @@ -1,6 +1,5 @@  - diff --git a/tests/Perspex.Layout.UnitTests/FullLayoutTests.cs b/tests/Perspex.Layout.UnitTests/FullLayoutTests.cs index 97b4d97805..fb714e5278 100644 --- a/tests/Perspex.Layout.UnitTests/FullLayoutTests.cs +++ b/tests/Perspex.Layout.UnitTests/FullLayoutTests.cs @@ -17,7 +17,6 @@ using Perspex.Styling; using Perspex.Themes.Default; using Ploeh.AutoFixture; using Ploeh.AutoFixture.AutoMoq; -using Splat; using Xunit; namespace Perspex.Layout.UnitTests @@ -27,7 +26,7 @@ namespace Perspex.Layout.UnitTests [Fact] public void Grandchild_Size_Changed() { - using (var context = Locator.CurrentMutable.WithResolver()) + using (var context = PerspexLocator.EnterScope()) { RegisterServices(); @@ -66,7 +65,7 @@ namespace Perspex.Layout.UnitTests [Fact] public void Test_ScrollViewer_With_TextBlock() { - using (var context = Locator.CurrentMutable.WithResolver()) + using (var context = PerspexLocator.EnterScope()) { RegisterServices(); @@ -130,7 +129,7 @@ namespace Perspex.Layout.UnitTests private void RegisterServices() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); - var l = Locator.CurrentMutable; + var formattedText = fixture.Create(); var globalStyles = new Mock(); @@ -143,14 +142,15 @@ namespace Perspex.Layout.UnitTests windowImpl.Setup(x => x.MaxClientSize).Returns(new Size(1024, 1024)); globalStyles.Setup(x => x.Styles).Returns(theme); - l.RegisterConstant(new Mock().Object, typeof(IInputManager)); - l.RegisterConstant(globalStyles.Object, typeof(IGlobalStyles)); - l.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); - l.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); - l.RegisterConstant(new Mock().Object, typeof(IPlatformThreadingInterface)); - l.RegisterConstant(renderManager, typeof(IRenderManager)); - l.RegisterConstant(new Styler(), typeof(IStyler)); - l.RegisterConstant(windowImpl.Object, typeof(IWindowImpl)); + PerspexLocator.CurrentMutable + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(globalStyles.Object) + .Bind().ToConstant(new LayoutManager()) + .Bind().ToConstant(renderInterface) + .Bind().ToConstant(new Mock().Object) + .Bind().ToConstant(renderManager) + .Bind().ToConstant(new Styler()) + .Bind().ToConstant(windowImpl.Object); } } } diff --git a/tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj b/tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj index e558a11fd5..e849ae0b25 100644 --- a/tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj +++ b/tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj @@ -56,9 +56,6 @@ ..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll diff --git a/tests/Perspex.Layout.UnitTests/packages.config b/tests/Perspex.Layout.UnitTests/packages.config index 8190084b07..a031cf84fd 100644 --- a/tests/Perspex.Layout.UnitTests/packages.config +++ b/tests/Perspex.Layout.UnitTests/packages.config @@ -3,7 +3,6 @@ - diff --git a/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj b/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj index ac99be3bdf..60b3b02b11 100644 --- a/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj +++ b/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj @@ -53,9 +53,6 @@ ..\..\packages\Magick.NET-Q16-AnyCPU.7.0.0.0018\lib\net40-client\Magick.NET.Core.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll diff --git a/tests/Perspex.RenderTests/packages.config b/tests/Perspex.RenderTests/packages.config index 1ae00bc4cd..c447f9c0e9 100644 --- a/tests/Perspex.RenderTests/packages.config +++ b/tests/Perspex.RenderTests/packages.config @@ -1,7 +1,6 @@  - diff --git a/tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj b/tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj index 4e49c5c307..e48d6ac73b 100644 --- a/tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj +++ b/tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj @@ -47,9 +47,6 @@ ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll diff --git a/tests/Perspex.SceneGraph.UnitTests/packages.config b/tests/Perspex.SceneGraph.UnitTests/packages.config index a2ad2a99ca..8cbc4ec26f 100644 --- a/tests/Perspex.SceneGraph.UnitTests/packages.config +++ b/tests/Perspex.SceneGraph.UnitTests/packages.config @@ -5,7 +5,6 @@ - diff --git a/tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj b/tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj index 180f5f313d..4099319b5a 100644 --- a/tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj +++ b/tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj @@ -50,9 +50,6 @@ ..\..\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll - - ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll - ..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll diff --git a/tests/Perspex.Styling.UnitTests/packages.config b/tests/Perspex.Styling.UnitTests/packages.config index 3be7c908b3..3cf2b984d5 100644 --- a/tests/Perspex.Styling.UnitTests/packages.config +++ b/tests/Perspex.Styling.UnitTests/packages.config @@ -6,7 +6,6 @@ - From bed653012fd871f17cf7bdfb6e3460dbf3fae51d Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 25 Sep 2015 00:10:48 +0300 Subject: [PATCH 2/3] Revert to original Splat's behavior --- src/Perspex.Base/PerspexLocator.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Perspex.Base/PerspexLocator.cs b/src/Perspex.Base/PerspexLocator.cs index 262ffda8d8..8a9038c13e 100644 --- a/src/Perspex.Base/PerspexLocator.cs +++ b/src/Perspex.Base/PerspexLocator.cs @@ -30,12 +30,7 @@ namespace Perspex public object GetService(Type t) { Func rv; - if (_registry.TryGetValue(t, out rv)) - return rv(); - var parentRv = _parentScope?.GetService(t); - if (parentRv != null) - return parentRv; - throw new TypeLoadException("Unable to find registrations for service " + t); + return _registry.TryGetValue(t, out rv) ? rv() : _parentScope?.GetService(t); } public class RegistrationHelper @@ -94,11 +89,24 @@ namespace Perspex } } + class NullDisposable : IDisposable + { + public void Dispose() + { + + } + } + public static IDisposable EnterScope() { + return new NullDisposable(); + + //Switch to that code when we are ready to fix tests + /* var d = new ResolverDisposable(Current, CurrentMutable); Current = CurrentMutable = new PerspexLocator(Current); return d; + */ } } From 2d0e4ae0c7bdd7fe2b9e833a40017af8b90e3801 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 25 Sep 2015 00:21:43 +0300 Subject: [PATCH 3/3] Removed NullDisposable --- src/Perspex.Base/PerspexLocator.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/Perspex.Base/PerspexLocator.cs b/src/Perspex.Base/PerspexLocator.cs index 8a9038c13e..521cb263db 100644 --- a/src/Perspex.Base/PerspexLocator.cs +++ b/src/Perspex.Base/PerspexLocator.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Reactive.Disposables; #pragma warning disable CS1591 // Enable me later @@ -89,25 +90,17 @@ namespace Perspex } } - class NullDisposable : IDisposable - { - public void Dispose() - { - - } - } public static IDisposable EnterScope() { - return new NullDisposable(); - + return Disposable.Empty; //Switch to that code when we are ready to fix tests /* var d = new ResolverDisposable(Current, CurrentMutable); Current = CurrentMutable = new PerspexLocator(Current); return d; */ - + } }