C# SvnClient Получить авторизацию Имя пользователя
Я не могу найти способ получить имя пользователя через C# SvnClient.
В командной строке у вас есть возможность ввести "svn auth" в командной строке, и он показывает имя пользователя там.
Тем не менее, это не так просто в C# SvnClient API.
У API есть свойство "Авторизация", которое, к сожалению, не имеет прямого вызова функции для получения имени пользователя.
Кто-нибудь знает как?
1 ответ
Решение
После долгих сольных поисков я обнаружил, что это можно сделать. - Хотя это не красиво
var cachedItems = SvnClient.Authentication.GetCachedProperties(SvnAuthenticationCacheType.UserNamePassword)
К сожалению, это не возвращает никаких открытых полей для имени пользователя или пароля. Это, однако, имеет закрытое поле с именем "_filename", которое можно использовать для получения имени пользователя / пароля. --- К которым можно получить доступ с помощью отражения.
foreach (var item in cachedItems)
{
///find the matching Uri to the repository you want
if (item.RealmUri.AbsoluteUri == ...)
{
var type = item.GetType();
var fields = type.GetFields();
var filename = fields.First(x => x.Name == "_filename").GetValue(item);
///Now just need to parse the file
using (var streamReader = new StreamReader(new FileStream(filename, FileMode.Open)))
{
while (streamReader.ReadLine() != "username") {}
streamReader.ReadLine(); ///There is 1 garbage line after username before the actual username
return streamReader.ReadLine();
}
}
}