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();
        }
    }
}
Другие вопросы по тегам