private bool ManageCustomDataStructure(string argumentName, object arg, int elem_counter = -1, int type = -1, string comment = "") { SeleniumLog log = SeleniumLog.Instance(); log.SaveIndent("ManageCustomDataStructure"); //log.Purple().WriteLine("ManageCustomDataStructure()"); //log.Indent(); // Display Dictionary and Sorted List values if (arg == null) { if (log.Config.FunctionTrace_DisplayNullInputs == true) { log.Gray().WriteLine(string.Format("{0} {1} : [NULL]", argumentName, elem_counter)); } log.RestoreIndent("ManageCustomDataStructure"); return(false); } if (CheckParameterType.CheckIfDictionary(arg) || CheckParameterType.CheckIfSortedList(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } // Display HashTable values else if (CheckParameterType.CheckIfHashTable(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } // Display Enumerable values else if (CheckParameterType.CheckIfEnumerable(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } else if (CheckParameterType.CheckIfCustomType(arg.GetType())) { var properties = CheckParameterType.GetPublicProperties(arg); //Console.WriteLine(argumentName + ":"); //log.SaveIndent("_______CustomType1________"); //log.Red().WriteLine("type: " + type + " argumentName - " + argumentName + " : count = " + elem_counter); if (type == 4) { //log.Red().WriteLine("30 type 4 : " + comment); log.Purple().WriteLine(comment); log.Indent(); } //log.Indent(); if (properties.Any()) { log.SaveIndent("_______CustomType1________"); //log.Green("type " + type + " properties.Any(): " + argumentName + " " + elem_counter + " :"); log.Green(argumentName + " " + elem_counter + " :"); int m = 0; foreach (PropertyInfo property in properties) { //log.SaveIndent("_______CustomType1________"); //log.Blue().WriteLine(argumentName + ":"); //log.Indent(); var propertyValue = property.GetValue(arg, null) ?? "null"; //DispalyInformation(property.Name, propertyValue); DispalyInformation(argumentName: property.Name, elem_counter: m, arg: propertyValue); m++; //log.RestoreIndent("_______CustomType1________"); } log.RestoreIndent("_______CustomType1________"); } var fields = CheckParameterType.GetPublicFields(arg); if (fields.Any()) { if (debug) { log.Green("37 type " + type + " fields.Any(): " + argumentName + " " + elem_counter + " :"); } else { log.Purple(argumentName + " " + elem_counter + " :"); } log.SaveIndent("_______FieldsAny______"); log.Indent(); int k = 0; foreach (FieldInfo field in fields) { log.SaveIndent("_______CustomType2________"); //log.Indent(); var fieldValue = field.GetValue(arg) ?? "null"; //DispalyInformation(field.Name, fieldValue); DispalyInformation(argumentName: field.Name, elem_counter: k, arg: fieldValue); k++; log.RestoreIndent("_______CustomType2________"); } //log.Red().WriteLine("loop 2 done"); log.RestoreIndent("_______FieldsAny______"); } log.RestoreIndent("ManageCustomDataStructure"); return(true); } //Console.WriteLine(string.Format("{0}:{1}", argumentName, arg)); if (type == 1) { if (debug) { log.Purple().WriteLine(string.Format("100 type" + type + " {0} [{1}]", argumentName, arg)); } else { log.Purple().WriteLine(string.Format("{0} [{1}]", argumentName, arg)); } } else if (type == 2) { if (debug) { log.Purple().WriteLine(string.Format("101 type {0}: key [{1}] value [{2}]", type, argumentName, arg)); } else { log.Purple().WriteLine(string.Format("key [{1}] value [{2}]", type, argumentName, arg)); } } else if (type == 3) { if (debug) { log.Purple().WriteLine(string.Format("102 type" + type + " [{0}]", arg)); } else { log.Purple().WriteLine(string.Format("[{0}]", arg)); } } else if (type == 4) { // not a data structure, so don't parse if (debug) { log.Purple().WriteLine(string.Format("103 type" + type + " {0} [{1}]", argumentName, arg)); } else { log.Purple().WriteLine(string.Format("{0} [{1}]", argumentName, arg)); } //return false; } log.RestoreIndent("ManageCustomDataStructure"); return(false); }