public static EncodingBase GetEncoding(Type type)
        {
            EncodingBase encodingBase = null;

            if (AmqpEncoding.encodingsByType.TryGetValue(type, out encodingBase))
            {
                return(encodingBase);
            }
            if (type.IsArray)
            {
                return(AmqpEncoding.arrayEncoding);
            }
            if (typeof(IList).IsAssignableFrom(type))
            {
                return(AmqpEncoding.listEncoding);
            }
            if (!typeof(DescribedType).IsAssignableFrom(type))
            {
                throw AmqpEncoding.GetEncodingException(SRAmqp.AmqpInvalidType(type.ToString()));
            }
            return(AmqpEncoding.describedTypeEncoding);
        }
        public static EncodingBase GetEncoding(object value)
        {
            EncodingBase encodingBase = null;
            Type         type         = value.GetType();

            if (AmqpEncoding.encodingsByType.TryGetValue(type, out encodingBase))
            {
                return(encodingBase);
            }
            if (type.IsArray)
            {
                return(AmqpEncoding.arrayEncoding);
            }
            if (value is IList)
            {
                return(AmqpEncoding.listEncoding);
            }
            if (!(value is DescribedType))
            {
                throw AmqpEncoding.GetEncodingException(SRAmqp.AmqpInvalidType(type.ToString()));
            }
            return(AmqpEncoding.describedTypeEncoding);
        }