internal IntPtr ConvertToNative(object pManagedHome, int dwFlags) { if (pManagedHome == null) { return(IntPtr.Zero); } if (pManagedHome is ArrayWithOffset) { throw new ArgumentException(Environment.GetResourceString("Arg_MarshalAsAnyRestriction")); } if (pManagedHome.GetType().IsArray) { return(this.ConvertArrayToNative(pManagedHome, dwFlags)); } string pManagedHome1; if ((pManagedHome1 = pManagedHome as string) != null) { return(AsAnyMarshaler.ConvertStringToNative(pManagedHome1, dwFlags)); } StringBuilder pManagedHome2; if ((pManagedHome2 = pManagedHome as StringBuilder) != null) { return(this.ConvertStringBuilderToNative(pManagedHome2, dwFlags)); } if (pManagedHome.GetType().IsLayoutSequential || pManagedHome.GetType().IsExplicitLayout) { return(this.ConvertLayoutToNative(pManagedHome, dwFlags)); } throw new ArgumentException(Environment.GetResourceString("Arg_NDirectBadObject")); }
internal IntPtr ConvertToNative(object pManagedHome, int dwFlags) { if (pManagedHome == null) { return(IntPtr.Zero); } if (pManagedHome is ArrayWithOffset) { throw new ArgumentException(Environment.GetResourceString("Arg_MarshalAsAnyRestriction")); } IntPtr result; string pManagedHome2; StringBuilder pManagedHome3; if (pManagedHome.GetType().IsArray) { result = this.ConvertArrayToNative(pManagedHome, dwFlags); } else if ((pManagedHome2 = (pManagedHome as string)) != null) { result = AsAnyMarshaler.ConvertStringToNative(pManagedHome2, dwFlags); } else if ((pManagedHome3 = (pManagedHome as StringBuilder)) != null) { result = this.ConvertStringBuilderToNative(pManagedHome3, dwFlags); } else { if (!pManagedHome.GetType().IsLayoutSequential&& !pManagedHome.GetType().IsExplicitLayout) { throw new ArgumentException(Environment.GetResourceString("Arg_NDirectBadObject")); } result = this.ConvertLayoutToNative(pManagedHome, dwFlags); } return(result); }