3 using System.Reflection;
5 using Tizen.NUI.XamlBinding.Internals;
7 namespace Tizen.NUI.Xaml
9 internal class ResourcesLoader : IResourcesLoader
11 public T CreateFromResource<T>(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo) where T: new()
13 var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
14 if (alternateResource != null) {
16 rd.LoadFromXaml(alternateResource);
20 var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
21 if (resourceId == null)
22 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
24 using (var stream = assembly.GetManifestResourceStream(resourceId)) {
26 throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
27 using (var reader = new StreamReader(stream)) {
29 rd.LoadFromXaml(reader.ReadToEnd());
35 public string GetResource(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo)
37 var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
38 if (alternateResource != null)
39 return alternateResource;
41 var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
42 if (resourceId == null)
43 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
45 using (var stream = assembly.GetManifestResourceStream(resourceId)) {
47 throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
48 using (var reader = new StreamReader(stream))
49 return reader.ReadToEnd();