public static string SerializeData <T>(IEnumerable <T> data, CsvDataDescriptor descriptor = null, CsvParser.DelimiterType delimiter = CsvParser.DelimiterType.Comma)
        {
            List <List <string> > list = new List <List <string> >();

            if (descriptor == null)
            {
                descriptor = CsvDataDescriptor.CreateDescriptor(typeof(T), null);
            }
            list.Add(descriptor.CreateCsvHeader());
            foreach (T current in data)
            {
                list.Add(CsvSerializer.Serialize(current, descriptor));
            }
            return(CsvParser.ConvertToCsv(list, delimiter));
        }
        public static string SerializeData(IEnumerable <object> data, CsvDataDescriptor descriptor = null, CsvParser.DelimiterType delimiter = CsvParser.DelimiterType.Comma)
        {
            List <List <string> > list = new List <List <string> >();

            if (descriptor == null)
            {
                List <Type> list2 = new List <Type>();
                foreach (object current in data)
                {
                    Type type = current.GetType();
                    if (!list2.Contains(type))
                    {
                        list2.Add(type);
                    }
                }
                descriptor = CsvDataDescriptor.CreateDescriptor(list2, null);
            }
            list.Add(descriptor.CreateCsvHeader());
            foreach (object current2 in data)
            {
                list.Add(CsvSerializer.Serialize(current2, descriptor));
            }
            return(CsvParser.ConvertToCsv(list, delimiter));
        }