/// <summary>
        /// The convert operation parameter.
        /// </summary>
        /// <param name="paramterInfo">The paramter info.</param>
        /// <param name="value">The value.</param>
        /// <returns><paramref name = "value" /> or a Guid if value is 16 bytes.</returns>
        public bool TryConvertParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
        {
            if (!paramterInfo.ValueType.IsAssignableFrom(typeof(Guid)) || (paramterInfo.ValueType == typeof(object)))
            {
                return(true);
            }
            if (value is Guid)
            {
                return(true);
            }
            byte[] b = value as byte[];
            if ((b != null) && (b.Length == 0x10))
            {
                value = new Guid(b);
                return(true);
            }
            string g = value as string;

            if (g != null)
            {
                value = new Guid(g);
                return(true);
            }
            return(false);
        }
예제 #2
0
        // Methods
        public static bool TryConvertOperationParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
        {
            if (paramterInfo.TypeCode != TypeCode.Object)
            {
                return(TryConvertParamter(paramterInfo.TypeCode, ref value));
            }
            if (paramterInfo.ValueType == typeof(Hashtable))
            {
                return(value is Hashtable);
            }
            if (paramterInfo.ValueType == typeof(Guid))
            {
                return(TryConvertToGuid(ref value));
            }
            if (paramterInfo.ValueType.IsArray)
            {
                IList array = value as IList;
                if (array == null)
                {
                    return(false);
                }
                switch (Type.GetTypeCode(paramterInfo.ValueType.GetElementType()))
                {
                case TypeCode.Byte:
                    return(TryConvertToByteArray(ref value, array));

                case TypeCode.Int16:
                    return(TryConvertToShortArray(ref value, array));

                case TypeCode.Int32:
                    return(TryConvertToIntArray(ref value, array));

                case TypeCode.Int64:
                    return(TryConvertToLongArray(ref value, array));

                case TypeCode.Single:
                    return(TryConvertToSingleArray(ref value, array));

                case TypeCode.Double:
                    return(TryConvertToDoubleArray(ref value, array));

                case TypeCode.String:
                    return(TryConvertToStringArray(ref value, array));
                }
                if (paramterInfo.ValueType == typeof(Hashtable[]))
                {
                    return(TryConvertToHashtableArray(ref value, array));
                }
            }
            if (paramterInfo.ValueType == typeof(List <int>))
            {
                return(TryConvertToIntList(ref value));
            }
            return(true);
        }
예제 #3
0
        public virtual bool TryConvertParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
        {
            if (paramterInfo.ValueType == typeof(Guid))
            {
                if (value is Guid)
                {
                    return(true);
                }
                byte[] buffer = value as byte[];
                if ((buffer != null) && (buffer.Length == 0x10))
                {
                    value = new Guid(buffer);
                    return(true);
                }
                string str = value as string;
                if (str != null)
                {
                    value = new Guid(str);
                    return(true);
                }
                return(false);
            }
            if (paramterInfo.ValueType != typeof(Guid?))
            {
                return(true);
            }
            if (value is Guid?)
            {
                return(true);
            }
            byte[] b = value as byte[];
            if ((b != null) && (b.Length == 0x10))
            {
                value = new Guid(b);
                return(true);
            }
            string g = value as string;

            if (g != null)
            {
                value = new Guid(g);
                return(true);
            }
            return(false);
        }
예제 #4
0
 public override bool TryConvertParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
 {
     return(Amf3Protocol.HeaderV2Instance.TryConvertParameter(paramterInfo, ref value));
 }
예제 #5
0
        /// <summary>
        /// The try convert operation parameter.
        /// </summary>
        /// <param name="paramterInfo"> The paramter info.</param>
        /// <param name="value">The value.</param>
        /// <returns>true if operation parameter.</returns>
        public bool TryConvertParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
        {
            try
            {
                if (paramterInfo.TypeCode != TypeCode.Object)
                {
                    if (value is int)
                    {
                        switch (paramterInfo.TypeCode)
                        {
                        case TypeCode.Byte:
                            value = (byte)((int)value);
                            return(true);

                        case TypeCode.Int16:
                            value = (short)((int)value);
                            return(true);

                        case TypeCode.Int32:
                            value = (int)value;
                            return(true);

                        case TypeCode.Int64:
                            value = (int)value;
                            return(true);

                        case TypeCode.Single:
                            value = (int)value;
                            return(true);

                        case TypeCode.Double:
                            value = (int)value;
                            return(true);
                        }
                    }
                    else if (value is double)
                    {
                        switch (paramterInfo.TypeCode)
                        {
                        case TypeCode.Byte:
                            value = (byte)((double)value);
                            return(true);

                        case TypeCode.Int16:
                            value = (short)((double)value);
                            return(true);

                        case TypeCode.Int32:
                            value = (int)((double)value);
                            return(true);

                        case TypeCode.Int64:
                            value = (long)((double)value);
                            return(true);

                        case TypeCode.Single:
                            value = (float)((double)value);
                            return(true);

                        case TypeCode.Double:
                            value = (double)value;
                            return(true);
                        }
                    }
                }
                else
                {
                    if (paramterInfo.ValueType.IsAssignableFrom(typeof(Guid)) && (paramterInfo.ValueType != typeof(object)))
                    {
                        if (value is Guid)
                        {
                            return(true);
                        }
                        byte[] b = value as byte[];
                        if ((b != null) && (b.Length == 0x10))
                        {
                            value = new Guid(b);
                            return(true);
                        }
                        string g = value as string;
                        if (g != null)
                        {
                            value = new Guid(g);
                            return(true);
                        }
                        return(false);
                    }
                    if (paramterInfo.ValueType == typeof(double[]))
                    {
                        object[] objArray = value as object[];
                        if (objArray == null)
                        {
                            return(false);
                        }
                        double[] numArray = new double[objArray.Length];
                        for (int i = 0; i < objArray.Length; i++)
                        {
                            numArray[i] = Convert.ToDouble(objArray[i]);
                        }
                        value = numArray;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(int[]))
                    {
                        object[] objArray2 = value as object[];
                        if (objArray2 == null)
                        {
                            return(false);
                        }
                        int[] numArray2 = new int[objArray2.Length];
                        for (int j = 0; j < objArray2.Length; j++)
                        {
                            numArray2[j] = Convert.ToInt32(objArray2[j]);
                        }
                        value = numArray2;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(long[]))
                    {
                        object[] objArray3 = value as object[];
                        if (objArray3 == null)
                        {
                            return(false);
                        }
                        long[] numArray3 = new long[objArray3.Length];
                        for (int k = 0; k < objArray3.Length; k++)
                        {
                            if (objArray3[k] is double)
                            {
                                numArray3[k] = (long)((double)objArray3[k]);
                            }
                            else
                            {
                                numArray3[k] = (int)objArray3[k];
                            }
                        }
                        value = numArray3;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(short[]))
                    {
                        object[] objArray4 = value as object[];
                        if (objArray4 == null)
                        {
                            return(false);
                        }
                        short[] numArray4 = new short[objArray4.Length];
                        for (int m = 0; m < objArray4.Length; m++)
                        {
                            numArray4[m] = (short)((int)objArray4[m]);
                        }
                        value = numArray4;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(float[]))
                    {
                        object[] objArray5 = value as object[];
                        if (objArray5 == null)
                        {
                            return(false);
                        }
                        float[] numArray5 = new float[objArray5.Length];
                        for (int n = 0; n < objArray5.Length; n++)
                        {
                            numArray5[n] = Convert.ToSingle(objArray5[n]);
                        }
                        value = numArray5;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(string[]))
                    {
                        object[] objArray6 = value as object[];
                        if (objArray6 == null)
                        {
                            return(false);
                        }
                        string[] strArray = new string[objArray6.Length];
                        for (int num6 = 0; num6 < objArray6.Length; num6++)
                        {
                            strArray[num6] = (string)objArray6[num6];
                        }
                        value = strArray;
                        return(true);
                    }
                    if (paramterInfo.ValueType == typeof(Hashtable[]))
                    {
                        object[] objArray7 = value as object[];
                        if (objArray7 == null)
                        {
                            return(false);
                        }
                        Hashtable[] hashtableArray = new Hashtable[objArray7.Length];
                        for (int num7 = 0; num7 < objArray7.Length; num7++)
                        {
                            hashtableArray[num7] = (Hashtable)objArray7[num7];
                        }
                        value = hashtableArray;
                        return(true);
                    }
                }
                return(true);
            }
            catch (Exception exception)
            {
                if (log.IsWarnEnabled)
                {
                    log.Warn(exception);
                }
                return(false);
            }
        }
예제 #6
0
 /// <summary>
 ///   The try convert operation parameter.
 /// </summary>
 /// <param name = "paramterInfo">
 ///   The paramter info.
 /// </param>
 /// <param name = "value">
 ///   The value.
 /// </param>
 /// <returns>
 ///   Always true.
 /// </returns>
 public bool TryConvertOperationParameter(ObjectMemberInfo<DataMemberAttribute> paramterInfo, ref object value)
 {
     return true;
 }
예제 #7
0
 /// <summary>
 ///   The try convert operation parameter.
 /// </summary>
 /// <param name = "paramterInfo">
 ///   The paramter info.
 /// </param>
 /// <param name = "value">
 ///   The value.
 /// </param>
 /// <returns>
 ///   Always true.
 /// </returns>
 public bool TryConvertOperationParameter(ObjectMemberInfo <DataMemberAttribute> paramterInfo, ref object value)
 {
     return(true);
 }