[NUI] Adjust directory (#903)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Xaml / MarkupExtensions / TypeExtension.cs
1 using System;
2 using Tizen.NUI.Binding;
3
4 namespace Tizen.NUI.Xaml
5 {
6     [ContentProperty(nameof(TypeName))]
7     [ProvideCompiled("Tizen.NUI.Xaml.Build.Tasks.TypeExtension")]
8     internal class TypeExtension : IMarkupExtension<Type>
9     {
10         public string TypeName { get; set; }
11
12         public Type ProvideValue(IServiceProvider serviceProvider)
13         {
14             if (string.IsNullOrEmpty(TypeName))
15                 throw new InvalidOperationException("TypeName isn't set.");
16             if (serviceProvider == null)
17                 throw new ArgumentNullException(nameof(serviceProvider));
18             var typeResolver = serviceProvider.GetService(typeof (IXamlTypeResolver)) as IXamlTypeResolver;
19             if (typeResolver == null)
20                 throw new ArgumentException("No IXamlTypeResolver in IServiceProvider");
21
22             return typeResolver.Resolve(TypeName, serviceProvider);
23         }
24
25         object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
26         {
27             return (this as IMarkupExtension<Type>).ProvideValue(serviceProvider);
28         }
29     }
30 }