В дополнение к этим ответам я счел полезным рассмотреть следующие 2 момента:
Возможно, потребуется применить схему аутентификации:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
Также, как правило, со схемой аутентификации NTLM, может потребоваться предоставить явно домен AD.
В git bash:
echo %userdomain%
И соответственно обновите http.proxy:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
В любом случае, расследованию может помочь добавление журналов CURL:
export GIT_CURL_VERBOSE=1
Вот общая мода на создание CSV из списка объектов с использованием отражения:
public static string ToCsv<T>(string separator, IEnumerable<T> objectlist)
{
Type t = typeof(T);
FieldInfo[] fields = t.GetFields();
string header = String.Join(separator, fields.Select(f => f.Name).ToArray());
StringBuilder csvdata = new StringBuilder();
csvdata.AppendLine(header);
foreach (var o in objectlist)
csvdata.AppendLine(ToCsvFields(separator, fields, o));
return csvdata.ToString();
}
public static string ToCsvFields(string separator, FieldInfo[] fields, object o)
{
StringBuilder linie = new StringBuilder();
foreach (var f in fields)
{
if (linie.Length > 0)
linie.Append(separator);
var x = f.GetValue(o);
if (x != null)
linie.Append(x.ToString());
}
return linie.ToString();
}
Можно сделать множество вариантов, например, записывать непосредственно в файл в ToCsv(), или заменить строковый конструктор на IEnumerable и yield statements.
В качестве практического правила я рекомендую только переопределение toString как инструмента для отладки, если это для бизнес-логики, это должен быть явный метод класса / интерфейса.
Для простой сериализации, подобной этой Я бы посоветовал создать отдельный класс, который знает о вашей выходной библиотеке CSV и ваших бизнес-объектах, которые выполняют сериализацию, а не проталкивают сериализацию в сами бизнес-объекты.
Таким образом, вы получите класс для каждого выходного формата, который производит представление вашей модели.
Для более сложной сериализации, когда вы пытаетесь написать граф объектов для сохранения, я бы подумал о том, чтобы поместить его в бизнес-классы, но только если это сделает код более чистым.