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)); }