private void WriteType(MrType t) { var name = ""; var gargs = t.GetGenericArguments(); var gparams = t.GetGenericTypeParameters(); name = GetSimpleTypeName(t, gargs, gparams); writer.WriteStartElement("type"); if (t.IsArray) { writer.WriteAttributeString("array", "true"); name = name.Replace("[]", ""); } writer.WriteAttributeString("name", name); if (!gargs.IsEmpty) { writer.WriteAttributeString("generic", "true"); writer.WriteStartElement("params"); foreach (var p in gparams) { WriteType(p); } writer.WriteEndElement(); } else { } writer.WriteEndElement(); }
public static string GetCppWinRTType(MrType t) { var primitiveTypes = new Dictionary <string, string>() { { "System.String", "winrt::hstring" }, { "System.Boolean", "bool" }, { "System.Int32", "int32_t" }, { "System.Int64", "int64_t" }, { "System.Double", "double" }, { "System.Single", "float" }, { "System.Uri", "winrt::Windows::Foundation::Uri" }, { "System.Object", "winrt::Windows::Foundation::IInspectable" }, }; if (t.GetFullName() == $"{XamlNames.XamlNamespace}.Controls.Maps.MapStyle") { // MapStyle has a bug where it doesn't support coercion from int } else if (t.IsEnum) { return("int32_t"); } else if (t.GetFullName() == "System.Nullable`1") { return(GetCppWinRTType(t.GetGenericTypeParameters().First())); } if (primitiveTypes.ContainsKey(t.GetFullName())) { return(primitiveTypes[t.GetFullName()]); } return($"winrt::{t.GetFullName().Replace(".", "::")}"); }