From d2a7bce5221f753fe93154292469d0bf9cfb3f24 Mon Sep 17 00:00:00 2001 From: Dongle <29563098+dongle-the-gadget@users.noreply.github.com> Date: Thu, 6 Nov 2025 00:54:49 +0700 Subject: [PATCH] Fix IReference for XAML TypeName. --- src/cswinrt/code_writers.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/cswinrt/code_writers.h b/src/cswinrt/code_writers.h index 0b88c504f..4328910bd 100644 --- a/src/cswinrt/code_writers.h +++ b/src/cswinrt/code_writers.h @@ -451,9 +451,21 @@ namespace cswinrt [&](generic_type_instance const& type) { auto guard{ w.push_generic_args(type) }; - w.write("%<%>", - bind(type.generic_type, nameType), - bind_list(", ", type.generic_args, nameType)); + + bool isIReference = + type.generic_type.TypeName() == "IReference`1" && + type.generic_type.TypeNamespace() == "Windows.Foundation"; + + if (!isIReference) + { + w.write("%<%>", + bind(type.generic_type, nameType), + bind_list(", ", type.generic_args, nameType)); + } + else + { + w.write("%?", bind(type.generic_args[0], nameType)); + } }, [&](generic_type_param const& param) { w.write(param.Name()); }, [&](fundamental_type const& type)