Exemplo n.º 1
0
        public virtual object TryDone(object obj)
        {
            if (obj == null)
            {
                return("");
            }
            Type   t  = obj.GetType();
            string tn = t.Name.ToLower();

            if (AllowDictionary && (t is IDictionary || tn.StartsWith("dictionary") || tn.StartsWith("mimfa_dictionary")))
            {
                return(Done(MiMFa_Convert.ToDictionary(obj)));
            }
            if (AllowDictionary && (tn.StartsWith("mimfa_matrix")))
            {
                return(Done(MiMFa_Convert.ToMiMFaMatrix(obj)));
            }
            if (AllowKeyValuePair && tn.StartsWith("keyvaluepair"))
            {
                return(Done(MiMFa_Convert.ToKeyValuePair(obj)));
            }
            if (AllowList && (t is IList || tn.StartsWith("list") || tn.StartsWith("mimfa_list")))
            {
                return(Done(MiMFa_Convert.ToList(obj)));
            }
            if (AllowByte && AllowArray && t == typeof(byte[]))
            {
                return(Done((byte[])obj));
            }
            if (AllowArray && tn.EndsWith("[]"))
            {
                return(Done(MiMFa_Convert.ToArray(obj)));
            }
            if (AllowCollection && t is ICollection)
            {
                return(Done(MiMFa_Convert.ToArray(obj)));
            }
            if (AllowStack && tn.StartsWith("stack"))
            {
                return(Done(MiMFa_Convert.ToStack(obj)));
            }
            if (AllowStack && tn.StartsWith("queue"))
            {
                return(Done(MiMFa_Convert.ToQueue(obj)));
            }
            if (AllowDataTable && tn.StartsWith("datatable"))
            {
                return(Done((DataTable)obj));
            }
            if (AllowDataRow && tn.StartsWith("datarow"))
            {
                return(Done((DataRow)obj));
            }
            if (AllowEnum && obj is Enum)
            {
                return(Done(obj + ""));
            }
            if (AllowBitmap && obj is Bitmap)
            {
                return(Done((Bitmap)obj));
            }
            if (AllowUri && obj is Uri)
            {
                return(Done((Uri)obj));
            }
            if (AllowEventPack && obj is EventPack)
            {
                return(Done((EventPack)obj));
            }
            if (AllowByte && obj is byte)
            {
                return(Done((byte)obj));
            }
            if (AllowString && obj is String)
            {
                return(Done(obj + ""));
            }
            if (double.NaN.Equals(obj))
            {
                return("NaN");
            }
            if (t == typeof(Int64) || t == typeof(long))
            {
                return(Done(Convert.ToInt64(obj)));
            }
            if (t == typeof(UInt64) || t == typeof(Double))
            {
                return(Done(Convert.ToDouble(obj)));
            }
            return(Normalization(obj));
        }