コード例 #1
0
        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"));
        }
コード例 #2
0
        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);
        }