[MediaContent] Fix description of Delete method (#866)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI.Xaml / src / internal / Xaml / ResourcesLoader.cs
1 using System;
2 using System.IO;
3 using System.Reflection;
4 using System.Xml;
5 using Tizen.NUI.XamlBinding.Internals;
6
7 namespace Tizen.NUI.Xaml
8 {
9     internal class ResourcesLoader : IResourcesLoader
10     {
11         public T CreateFromResource<T>(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo) where T: new()
12         {
13             var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
14             if (alternateResource != null) {
15                 var rd = new T();
16                 rd.LoadFromXaml(alternateResource);
17                 return rd;
18             }
19
20             var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
21             if (resourceId == null)
22                 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
23
24             using (var stream = assembly.GetManifestResourceStream(resourceId)) {
25                 if (stream == null)
26                     throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
27                 using (var reader = new StreamReader(stream)) {
28                     var rd = new T();
29                     rd.LoadFromXaml(reader.ReadToEnd());
30                     return rd;
31                 }
32             }
33         }
34
35         public string GetResource(string resourcePath, Assembly assembly, IXmlLineInfo lineInfo)
36         {
37             var alternateResource = ResourceLoader.ResourceProvider?.Invoke(assembly.GetName(), resourcePath);
38             if (alternateResource != null)
39                 return alternateResource;
40
41             var resourceId = XamlResourceIdAttribute.GetResourceIdForPath(assembly, resourcePath);
42             if (resourceId == null)
43                 throw new XamlParseException($"Resource '{resourcePath}' not found.", lineInfo);
44
45             using (var stream = assembly.GetManifestResourceStream(resourceId)) {
46                 if (stream == null)
47                     throw new XamlParseException($"No resource found for '{resourceId}'.", lineInfo);
48                 using (var reader = new StreamReader(stream))
49                     return reader.ReadToEnd();
50             }
51         }
52     }
53 }