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)