From: Xianbing Teng Date: Thu, 20 Jun 2019 06:13:14 +0000 (+0800) Subject: [NUI] Support constructor with default parameter (#893) X-Git-Tag: submit/tizen/20190621.005212~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9c1674d1cb32b574ec89845cf1e608659e975d23;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Support constructor with default parameter (#893) --- diff --git a/src/Tizen.NUI/src/internal/Xaml/CreateValuesVisitor.cs b/src/Tizen.NUI/src/internal/Xaml/CreateValuesVisitor.cs index c4e4c50eb..9801ff88a 100755 --- a/src/Tizen.NUI/src/internal/Xaml/CreateValuesVisitor.cs +++ b/src/Tizen.NUI/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); + } if (value is Element) { if (null != Application.Current) @@ -216,7 +225,7 @@ namespace Tizen.NUI.Xaml if (!node.Properties.ContainsKey(XmlName.xFactoryMethod)) { //non-default ctor - object ret = Activator.CreateInstance(nodeType, arguments); + object ret = Activator.CreateInstance(nodeType, BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding, null, arguments, CultureInfo.CurrentCulture); ; if (ret is Element) { if (null != Application.Current)