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)