The Marshal type currently has lot members which are related to COM and other things which are missing in Xamarin:
public static partial class Marshal
{
//INTEROP public static void CleanupUnusedObjectsInCurrentContext() { }
//INTEROP public static object CreateWrapperOfType(object o, System.Type t) { throw null; }
//INTEROP public static TWrapper CreateWrapperOfType<T, TWrapper>(T o) { throw null; }
//INTEROP public static int FinalReleaseComObject(object o) { throw null; }
//INTEROP public static System.Guid GenerateGuidForType(System.Type type) { throw null; }
//INTEROP public static string GenerateProgIdForType(System.Type type) { throw null; }
//INTEROP public static object GetActiveObject(string progID) { throw null; }
//INTEROP public static System.IntPtr GetComInterfaceForObject(object o, System.Type T) { throw null; }
//INTEROP public static System.IntPtr GetComInterfaceForObject(object o, System.Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode) { throw null; }
//INTEROP public static System.IntPtr GetComInterfaceForObject<T, TInterface>(T o) { throw null; }
//INTEROP public static System.IntPtr GetComInterfaceForObjectInContext(object o, System.Type t) { throw null; }
//INTEROP public static object GetComObjectData(object obj, object key) { throw null; }
//INTEROP public static int GetComSlotForMethodInfo(System.Reflection.MemberInfo m) { throw null; }
//INTEROP public static int GetEndComSlot(System.Type t) { throw null; }
//INTEROP public static int GetExceptionCode() { throw null; }
//INTEROP public static System.IntPtr GetExceptionPointers() { throw null; }
//INTEROP public static System.IntPtr GetHINSTANCE(System.Reflection.Module m) { throw null; }
//INTEROP public static int GetHRForException(System.Exception e) { throw null; }
//INTEROP public static int GetHRForLastWin32Error() { throw null; }
//INTEROP public static System.IntPtr GetIDispatchForObject(object o) { throw null; }
//INTEROP public static System.IntPtr GetIDispatchForObjectInContext(object o) { throw null; }
//INTEROP public static System.IntPtr GetITypeInfoForType(System.Type t) { throw null; }
//INTEROP public static System.IntPtr GetIUnknownForObject(object o) { throw null; }
//INTEROP public static System.IntPtr GetIUnknownForObjectInContext(object o) { throw null; }
//INTEROP [System.ObsoleteAttribute("The GetManagedThunkForUnmanagedMethodPtr method has been deprecated and will be removed in a future release.", false)]
//INTEROP public static System.IntPtr GetManagedThunkForUnmanagedMethodPtr(System.IntPtr pfnMethodToWrap, System.IntPtr pbSignature, int cbSignature) { throw null; }
//INTEROP public static System.Reflection.MemberInfo GetMethodInfoForComSlot(System.Type t, int slot, ref System.Runtime.InteropServices.ComMemberType memberType) { throw null; }
//INTEROP public static void GetNativeVariantForObject(object obj, System.IntPtr pDstNativeVariant) { }
//INTEROP public static void GetNativeVariantForObject<T>(T obj, System.IntPtr pDstNativeVariant) { }
//INTEROP public static object GetObjectForIUnknown(System.IntPtr pUnk) { throw null; }
//INTEROP public static object GetObjectForNativeVariant(System.IntPtr pSrcNativeVariant) { throw null; }
//INTEROP public static T GetObjectForNativeVariant<T>(System.IntPtr pSrcNativeVariant) { throw null; }
//INTEROP public static object[] GetObjectsForNativeVariants(System.IntPtr aSrcNativeVariant, int cVars) { throw null; }
//INTEROP public static T[] GetObjectsForNativeVariants<T>(System.IntPtr aSrcNativeVariant, int cVars) { throw null; }
//INTEROP public static int GetStartComSlot(System.Type t) { throw null; }
//INTEROP [System.ObsoleteAttribute("The GetThreadFromFiberCookie method has been deprecated. Use the hosting API to perform this operation.", false)]
//INTEROP public static System.Threading.Thread GetThreadFromFiberCookie(int cookie) { throw null; }
//INTEROP public static object GetTypedObjectForIUnknown(System.IntPtr pUnk, System.Type t) { throw null; }
//INTEROP public static System.Type GetTypeForITypeInfo(System.IntPtr piTypeInfo) { throw null; }
//INTEROP public static System.Type GetTypeFromCLSID(System.Guid clsid) { throw null; }
//INTEROP public static string GetTypeInfoName(System.Runtime.InteropServices.ComTypes.ITypeInfo typeInfo) { throw null; }
//INTEROP [System.ObsoleteAttribute("Use System.Runtime.InteropServices.Marshal.GetTypeInfoName(ITypeInfo pTLB) instead. http://go.microsoft.com/fwlink/?linkid=14202&ID=0000011.", false)]
//INTEROP public static string GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo pTI) { throw null; }
//INTEROP public static System.Guid GetTypeLibGuid(System.Runtime.InteropServices.ComTypes.ITypeLib typelib) { throw null; }
//INTEROP [System.ObsoleteAttribute("Use System.Runtime.InteropServices.Marshal.GetTypeLibGuid(ITypeLib pTLB) instead. http://go.microsoft.com/fwlink/?linkid=14202&ID=0000011.", false)]
//INTEROP public static System.Guid GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib pTLB) { throw null; }
//INTEROP public static System.Guid GetTypeLibGuidForAssembly(System.Reflection.Assembly asm) { throw null; }
//INTEROP public static int GetTypeLibLcid(System.Runtime.InteropServices.ComTypes.ITypeLib typelib) { throw null; }
//INTEROP [System.ObsoleteAttribute("Use System.Runtime.InteropServices.Marshal.GetTypeLibLcid(ITypeLib pTLB) instead. http://go.microsoft.com/fwlink/?linkid=14202&ID=0000011.", false)]
//INTEROP public static int GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib pTLB) { throw null; }
//INTEROP public static string GetTypeLibName(System.Runtime.InteropServices.ComTypes.ITypeLib typelib) { throw null; }
//INTEROP [System.ObsoleteAttribute("Use System.Runtime.InteropServices.Marshal.GetTypeLibName(ITypeLib pTLB) instead. http://go.microsoft.com/fwlink/?linkid=14202&ID=0000011.", false)]
//INTEROP public static string GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib pTLB) { throw null; }
//INTEROP public static void GetTypeLibVersionForAssembly(System.Reflection.Assembly inputAssembly, out int majorVersion, out int minorVersion) { majorVersion = default(int); minorVersion = default(int); }
//INTEROP public static object GetUniqueObjectForIUnknown(System.IntPtr unknown) { throw null; }
//INTEROP [System.ObsoleteAttribute("The GetUnmanagedThunkForManagedMethodPtr method has been deprecated and will be removed in a future release.", false)]
//INTEROP public static System.IntPtr GetUnmanagedThunkForManagedMethodPtr(System.IntPtr pfnMethodToWrap, System.IntPtr pbSignature, int cbSignature) { throw null; }
//INTEROP public static bool IsComObject(object o) { throw null; }
//INTEROP public static bool IsTypeVisibleFromCom(System.Type t) { throw null; }
//INTEROP public static int NumParamBytes(System.Reflection.MethodInfo m) { throw null; }
//INTEROP public static int ReleaseComObject(object o) { throw null; }
//INTEROP [System.ObsoleteAttribute("This API did not perform any operation and will be removed in future versions of the CLR.", false)]
//INTEROP public static void ReleaseThreadCache() { }
//INTEROP public static bool SetComObjectData(object obj, object key, object data) { throw null; }
}
We need to decide whether or not we add these to the netstandard or if we make people that want to use them cross-compile to .NET Framework?