3 using System.Reflection;
6 using Tizen.NUI.Binding.Internals;
8 // [assembly:Dependency(typeof(Tizen.NUI.Xaml.ResourcesLoader))]
9 namespace Tizen.NUI.Xaml
11 internal class ResourcesLoader : IResourcesLoader
13 public T CreateFromResource<T>(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo) where T: new()
15 var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
16 if (alternateResource != null) {
18 rd.LoadFromXaml(alternateResource);
22 var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
23 if (resourceId == null)
24 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
26 using (var stream = assembly.GetManifestResourceStream(resourceId)) {
28 throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
29 using (var reader = new StreamReader(stream)) {
31 rd.LoadFromXaml(reader.ReadToEnd());
37 public string GetResource(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo)
39 var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
40 if (alternateResource != null)
41 return alternateResource;
43 var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
44 if (resourceId == null)
45 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
47 using (var stream = assembly.GetManifestResourceStream(resourceId)) {
49 throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
50 using (var reader = new StreamReader(stream))
51 return reader.ReadToEnd();