diff --git a/src/Avalonia.Base/Platform/IAssetLoader.cs b/src/Avalonia.Base/Platform/IAssetLoader.cs index 32008ffd07..ba30af60bf 100644 --- a/src/Avalonia.Base/Platform/IAssetLoader.cs +++ b/src/Avalonia.Base/Platform/IAssetLoader.cs @@ -44,6 +44,20 @@ namespace Avalonia.Platform /// Stream Open(Uri uri, Uri baseUri = null); - Tuple OpenWithAssembly(Uri uri, Uri baseUri = null); + /// + /// Opens the resource with the requested URI and returns the resource string and the + /// assembly containing the resource. + /// + /// The URI. + /// + /// A base URI to use if is relative. + /// + /// + /// The stream containing the resource contents together with the assembly. + /// + /// + /// The resource was not found. + /// + Tuple OpenAndGetAssembly(Uri uri, Uri baseUri = null); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 62c23543fd..2e8771082c 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -29,7 +29,7 @@ Properties\SharedAssemblyInfo.cs - + diff --git a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs similarity index 96% rename from src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs rename to src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs index e057aa3b53..5047ce5e61 100644 --- a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs +++ b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs @@ -125,12 +125,12 @@ namespace Avalonia.Markup.Xaml "Could not create IAssetLoader : maybe Application.RegisterServices() wasn't called?"); } - var asset = assetLocator.OpenWithAssembly(uri, baseUri); - using (var stream = asset.Item2) + var asset = assetLocator.OpenAndGetAssembly(uri, baseUri); + using (var stream = asset.Item1) { try { - return Load(stream, asset.Item1, rootInstance, uri); + return Load(stream, asset.Item2, rootInstance, uri); } catch (Exception e) { @@ -153,7 +153,7 @@ namespace Avalonia.Markup.Xaml /// The optional instance into which the XAML should be loaded. /// /// The loaded object. - public object Load(string xaml, Assembly localAssembly, object rootInstance = null) + public object Load(string xaml, Assembly localAssembly = null, object rootInstance = null) { Contract.Requires(xaml != null); @@ -230,7 +230,7 @@ namespace Avalonia.Markup.Xaml public static object Parse(string xaml, Assembly localAssembly = null) => new AvaloniaXamlLoader().Load(xaml, localAssembly); - public static T Parse(string xaml, Assembly localAssembly) + public static T Parse(string xaml, Assembly localAssembly = null) => (T)Parse(xaml, localAssembly); } } \ No newline at end of file diff --git a/src/Shared/PlatformSupport/AssetLoader.cs b/src/Shared/PlatformSupport/AssetLoader.cs index eb9b04fe54..fa11edb57b 100644 --- a/src/Shared/PlatformSupport/AssetLoader.cs +++ b/src/Shared/PlatformSupport/AssetLoader.cs @@ -67,20 +67,23 @@ namespace Avalonia.Shared.PlatformSupport /// /// The resource was not found. /// - public Stream Open(Uri uri, Uri baseUri = null) => OpenWithAssembly(uri, baseUri).Item2; + public Stream Open(Uri uri, Uri baseUri = null) => OpenAndGetAssembly(uri, baseUri).Item1; /// - /// Opens the resource with the requested URI. + /// Opens the resource with the requested URI and returns the resource string and the + /// assembly containing the resource. /// /// The URI. /// /// A base URI to use if is relative. /// - /// An assembly (optional) and a stream containing the resource contents. + /// + /// The stream containing the resource contents together with the assembly. + /// /// /// The resource was not found. /// - public Tuple OpenWithAssembly(Uri uri, Uri baseUri = null) + public Tuple OpenAndGetAssembly(Uri uri, Uri baseUri = null) { var asset = GetAsset(uri, baseUri); @@ -89,7 +92,7 @@ namespace Avalonia.Shared.PlatformSupport throw new FileNotFoundException($"The resource {uri} could not be found."); } - return Tuple.Create(asset.Assembly, asset.GetStream()); + return Tuple.Create(asset.GetStream(), asset.Assembly); } private IAssetDescriptor GetAsset(Uri uri, Uri baseUri) diff --git a/tests/Avalonia.UnitTests/MockAssetLoader.cs b/tests/Avalonia.UnitTests/MockAssetLoader.cs index 3cf7370f1f..d6b70aee16 100644 --- a/tests/Avalonia.UnitTests/MockAssetLoader.cs +++ b/tests/Avalonia.UnitTests/MockAssetLoader.cs @@ -28,9 +28,9 @@ namespace Avalonia.UnitTests return new MemoryStream(Encoding.UTF8.GetBytes(_assets[uri])); } - public Tuple OpenWithAssembly(Uri uri, Uri baseUri = null) + public Tuple OpenAndGetAssembly(Uri uri, Uri baseUri = null) { - return Tuple.Create((Assembly) null, Open(uri, baseUri)); + return Tuple.Create(Open(uri, baseUri), (Assembly)null); } public void SetDefaultAssembly(Assembly asm)