From 99794148e8bcd9b9364434ed2190a4628bce12db Mon Sep 17 00:00:00 2001 From: Xianbing Teng Date: Mon, 10 Jun 2019 18:08:34 +0800 Subject: [PATCH] [NUI] To support constructor with default parameters (#879) --- .../src/internal/Xaml/CreateValuesVisitor.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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); -- 2.34.1