internal unsafe static void ConvertToNative(Type managedType, TypeNameNative *pNativeType) { if (!Environment.IsWinRTSupported) { throw new PlatformNotSupportedException(Environment.GetResourceString("PlatformNotSupported_WinRT")); } string text2; if (managedType != null) { if (managedType.GetType() != typeof(RuntimeType)) { throw new ArgumentException(Environment.GetResourceString("Argument_WinRTSystemRuntimeType", new object[] { managedType.GetType().ToString() })); } bool flag; string text = WinRTTypeNameConverter.ConvertToWinRTTypeName(managedType, out flag); if (text != null) { text2 = text; if (flag) { pNativeType->typeKind = TypeKind.Primitive; } else { pNativeType->typeKind = TypeKind.Metadata; } } else { text2 = managedType.AssemblyQualifiedName; pNativeType->typeKind = TypeKind.Projection; } } else { text2 = ""; pNativeType->typeKind = TypeKind.Projection; } int errorCode = UnsafeNativeMethods.WindowsCreateString(text2, text2.Length, &pNativeType->typeName); Marshal.ThrowExceptionForHR(errorCode, new IntPtr(-1)); }
internal static unsafe void ConvertToNative(Type managedType, TypeNameNative *pNativeType) { if (!Environment.IsWinRTSupported) { throw new PlatformNotSupportedException(Environment.GetResourceString("PlatformNotSupported_WinRT")); } string str; if (managedType != (Type)null) { if (managedType.GetType() != typeof(RuntimeType)) { throw new ArgumentException(Environment.GetResourceString("Argument_WinRTSystemRuntimeType", (object)managedType.GetType().ToString())); } bool isPrimitive; string winRtTypeName = WinRTTypeNameConverter.ConvertToWinRTTypeName(managedType, out isPrimitive); if (winRtTypeName != null) { str = winRtTypeName; pNativeType->typeKind = !isPrimitive ? TypeKind.Metadata : TypeKind.Primitive; } else { str = managedType.AssemblyQualifiedName; pNativeType->typeKind = TypeKind.Projection; } } else { str = ""; pNativeType->typeKind = TypeKind.Projection; } string sourceString = str; int length = sourceString.Length; IntPtr num = (IntPtr) & pNativeType->typeName; Marshal.ThrowExceptionForHR(UnsafeNativeMethods.WindowsCreateString(sourceString, length, (IntPtr *)num), new IntPtr(-1)); }