#pragma once namespace winrt::SampleApp::implementation { template struct App_baseWithProvider : public App_base { using IXamlType = ::winrt::Windows::UI::Xaml::Markup::IXamlType; IXamlType GetXamlType(::winrt::Windows::UI::Xaml::Interop::TypeName const& type) { return AppProvider()->GetXamlType(type); } IXamlType GetXamlType(::winrt::hstring const& fullName) { return AppProvider()->GetXamlType(fullName); } ::winrt::com_array<::winrt::Windows::UI::Xaml::Markup::XmlnsDefinition> GetXmlnsDefinitions() { return AppProvider()->GetXmlnsDefinitions(); } private: bool _contentLoaded{ false }; std::shared_ptr _appProvider; std::shared_ptr AppProvider() { if (!_appProvider) { _appProvider = std::make_shared(); } return _appProvider; } }; template using AppT2 = App_baseWithProvider; }