public static String GetObjectCreationExpression(IObjectInstance instance) { if (instance == null) return "null"; StringBuilder code = new StringBuilder(); if (instance.InstanceNeedsConstructor) { code.AppendFormat("new {0}(", instance.Instance.GetType().Name); var args = instance.CreationData.Arguments; for (int i = 0; i < args.Count; ++i ) { code.AppendFormat("{0}{1}", GetObjectCreationExpression(args[i]), i != args.Count-1? ", " : String.Empty); } code.AppendFormat(")"); } else { if (instance.Instance is String) return "\"" + instance.Instance + "\""; else if (instance.Instance is char) return "'" + instance.Instance + "'"; else if (instance.Instance is Enum) return instance.Instance.GetType().Name + "." + instance.Instance.ToString(); else if (instance is NullObjectInstance) return "null"; else if (instance.Instance is bool) return instance.ToString().ToLower(); else if (instance.Instance is Decimal) return instance.Instance.ToString() + "M"; else return instance.Instance.ToString(); } return code.ToString(); }