From: Xianbing Teng Date: Mon, 10 Jun 2019 10:08:34 +0000 (+0800) Subject: [NUI] To support constructor with default parameters (#879) X-Git-Tag: submit/tizen/20190611.005200~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=99794148e8bcd9b9364434ed2190a4628bce12db;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] To support constructor with default parameters (#879) --- diff --git a/src/Tizen.NUI.Xaml/src/internal/Xaml/CreateValuesVisitor.cs b/src/Tizen.NUI.Xaml/src/internal/Xaml/CreateValuesVisitor.cs index d5e493a26..8d59879dd 100755 --- a/src/Tizen.NUI.Xaml/src/internal/Xaml/CreateValuesVisitor.cs +++ b/src/Tizen.NUI.Xaml/src/internal/Xaml/CreateValuesVisitor.cs @@ -88,7 +88,16 @@ namespace Tizen.NUI.Xaml } if (value == null) { - value = Activator.CreateInstance(type); + if (type.GetTypeInfo().DeclaredConstructors.Any(ci => ci.IsPublic && ci.GetParameters().Length == 0)) + { + //default constructor + value = Activator.CreateInstance(type); + } + else + { + //constructor with all default parameters + value = Activator.CreateInstance(type, BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding, null, new object[] { Type.Missing }, CultureInfo.CurrentCulture); + } } } catch (TargetInvocationException e) @@ -204,7 +213,7 @@ namespace Tizen.NUI.Xaml if (!node.Properties.ContainsKey(XmlName.xFactoryMethod)) { //non-default ctor - return Activator.CreateInstance(nodeType, arguments); + return Activator.CreateInstance(nodeType, BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding, null, arguments, CultureInfo.CurrentCulture); } var factoryMethod = ((string)((ValueNode)node.Properties[XmlName.xFactoryMethod]).Value);