CSV File Exporter Class - .NET Framework, ASP.NET

// Reference: http://stackoverflow.com/questions/2422212/simple-c-sharp-csv-excel-export-class

/*===========================================================================================
    * Sample Usage
     
    List<BusinessObject> myList = GetBusinessObjectList();
    var csv = new CsvExporter<BusinessObject>(myList);
    Response.Write(csv.Export());
     
    */

public class CsvExporter<T> where T : class
{
    public List<T> Objects;

    public CsvExporter(List<T> objects)
    {
        Objects = objects;
    }

    public string Export()
    {
        return Export(true);
    }

    public string Export(bool includeHeaderLine)
    {

        StringBuilder sb = new StringBuilder();
        //Get properties using reflection.
        IList<PropertyInfo> propertyInfos = typeof(T).GetProperties();

        if (includeHeaderLine)
        {
            //add header line.
            foreach (PropertyInfo propertyInfo in propertyInfos)
            {
                sb.Append(propertyInfo.Name).Append(",");
            }
            sb.Remove(sb.Length - 1, 1).AppendLine();
        }

        //add value for each property.
        foreach (T obj in Objects)
        {
            foreach (PropertyInfo propertyInfo in propertyInfos)
            {
                sb.Append(MakeValueCsvFriendly(propertyInfo.GetValue(obj, null))).Append(",");
            }
            sb.Remove(sb.Length - 1, 1).AppendLine();
        }

        return sb.ToString();
    }

    //get the csv value for field.
    private string MakeValueCsvFriendly(object value)
    {
        if (value == null) return "";
        if (value is Nullable && ((INullable)value).IsNull) return "";

        if (value is DateTime)
        {
            if (((DateTime)value).TimeOfDay.TotalSeconds == 0)
                return ((DateTime)value).ToString("yyyy-MM-dd");
            return ((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss");
        }
        string output = value.ToString();

        if (output.Contains(",") || output.Contains("\""))
            output = '"' + output.Replace("\"", "\"\"") + '"';

        return output;

    }
}