diff --git a/Import/VlppWorkflowCompiler.cpp b/Import/VlppWorkflowCompiler.cpp index 450ee9c7..ab7c8eab 100644 --- a/Import/VlppWorkflowCompiler.cpp +++ b/Import/VlppWorkflowCompiler.cpp @@ -16047,6 +16047,20 @@ Expression Helpers return; } } + else + { + if ((fromType->GetTypeDescriptor() == tdVe && fromType->GetElementType()->GetDecorator() == ITypeInfo::Generic) + || fromType->GetHint() == TypeInfoHint::NativeCollectionReference + ) + { + writer.WriteString(L"::vl::__vwsn::UnboxCollection<"); + writer.WriteString(config->ConvertType(tdVe)); + writer.WriteString(L">("); + writeExpression(); + writer.WriteString(L")"); + return; + } + } } switch (fromType->GetDecorator()) diff --git a/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj b/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj index fc755dac..98058c8c 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj +++ b/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj @@ -53,7 +53,7 @@ Level3 Disabled - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) true @@ -69,7 +69,7 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true @@ -91,8 +91,8 @@ - - {96c559ca-9718-4bec-a053-28a0ab6a8ca2} + + {8018d622-66ba-4e65-9d03-bdac37ea9a54} diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml b/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml index cfcdfb1d..c641fa70 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml @@ -4,7 +4,7 @@ Source ..\..\UIRes\ColorPicker.bin - GacUI.h + GacUIReflection.h Demo diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp index 09dec82e..bd4e334f 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp @@ -325,6 +325,7 @@ Closure Definitions return ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiTemplate*>(__vwsn_template_)); } } + throw ::vl::Exception(::vl::WString(L"Cannot find a matched control template to create.", false)); } //------------------------------------------------------------------- @@ -743,6 +744,7 @@ Closure Definitions return ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiTemplate*>(__vwsn_template_)); } } + throw ::vl::Exception(::vl::WString(L"Cannot find a matched control template to create.", false)); } /*********************************************************************** @@ -1020,7 +1022,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_1))); } { - ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetItemSource(::vl::__vwsn::Ensure(::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(::vl::__vwsn::This(this)->ViewModel.Obj())->GetColorItems()))); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetItemSource(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(::vl::__vwsn::This(this)->ViewModel.Obj())->GetColorItems())); } { ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->SetSelectedIndex(0); @@ -1079,17 +1081,18 @@ namespace vl namespace description { #ifndef VCZH_DEBUG_NO_REFLECTION - IMPL_CPP_TYPE_INFO(::demo::ColorBomboItemTemplate) - IMPL_CPP_TYPE_INFO(::demo::ColorBomboItemTemplateConstructor) - IMPL_CPP_TYPE_INFO(::demo::ColorListItemTemplate) - IMPL_CPP_TYPE_INFO(::demo::ColorListItemTemplateConstructor) - IMPL_CPP_TYPE_INFO(::demo::IColorItem) - IMPL_CPP_TYPE_INFO(::demo::IViewModel) - IMPL_CPP_TYPE_INFO(::demo::MainWindow) - IMPL_CPP_TYPE_INFO(::demo::MainWindowConstructor) + IMPL_CPP_TYPE_INFO(demo::ColorBomboItemTemplate) + IMPL_CPP_TYPE_INFO(demo::ColorBomboItemTemplateConstructor) + IMPL_CPP_TYPE_INFO(demo::ColorListItemTemplate) + IMPL_CPP_TYPE_INFO(demo::ColorListItemTemplateConstructor) + IMPL_CPP_TYPE_INFO(demo::IColorItem) + IMPL_CPP_TYPE_INFO(demo::IViewModel) + IMPL_CPP_TYPE_INFO(demo::MainWindow) + IMPL_CPP_TYPE_INFO(demo::MainWindowConstructor) #define _ , BEGIN_CLASS_MEMBER(::demo::ColorBomboItemTemplate) + CLASS_MEMBER_CONSTRUCTOR(::demo::ColorBomboItemTemplate*(::vl::Ptr<::demo::IColorItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetTextColor, NO_PARAMETER) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_METHOD(SetTextColor, { L"value" }) @@ -1101,6 +1104,7 @@ namespace vl END_CLASS_MEMBER(::demo::ColorBomboItemTemplate) BEGIN_CLASS_MEMBER(::demo::ColorBomboItemTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorBomboItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) CLASS_MEMBER_FIELD(__vwsn_precompile_0) CLASS_MEMBER_FIELD(__vwsn_precompile_1) @@ -1112,12 +1116,14 @@ namespace vl END_CLASS_MEMBER(::demo::ColorBomboItemTemplateConstructor) BEGIN_CLASS_MEMBER(::demo::ColorListItemTemplate) + CLASS_MEMBER_CONSTRUCTOR(::demo::ColorListItemTemplate*(::vl::Ptr<::demo::IColorItem>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::ColorListItemTemplate) BEGIN_CLASS_MEMBER(::demo::ColorListItemTemplateConstructor) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::ColorListItemTemplateConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) CLASS_MEMBER_FIELD(__vwsn_precompile_0) CLASS_MEMBER_FIELD(ViewModel) @@ -1137,12 +1143,14 @@ namespace vl END_INTERFACE_MEMBER(::demo::IViewModel) BEGIN_CLASS_MEMBER(::demo::MainWindow) + CLASS_MEMBER_CONSTRUCTOR(::demo::MainWindow*(::vl::Ptr<::demo::IViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) END_CLASS_MEMBER(::demo::MainWindow) BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::MainWindowConstructor>(), NO_PARAMETER) CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) CLASS_MEMBER_FIELD(__vwsn_precompile_0) CLASS_MEMBER_FIELD(__vwsn_precompile_1) diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h index 67542fd9..ce72bfc1 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h @@ -10,7 +10,7 @@ https://github.com/vczh-libraries #ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES #define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES -#include "GacUI.h" +#include "GacUIReflection.h" #if defined( _MSC_VER) #pragma warning(push)