1 / 1 / 0
Регистрация: 20.01.2014
Сообщений: 8
1

Как получить значение SteamKit2.SteamFriends.ProfileInfoCallback?

24.01.2014, 14:34. Показов 4149. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я новичок в C#. Поэтому мне нужна небольшая помощь. Есть некий АПИ и я пишу для него приложение.

Итак.

C#
1
2
3
4
5
6
7
8
9
10
11
12
//
        // Сводка:
        //     Requests profile information for the given SteamKit2.SteamID.  Results are
        //     returned in a SteamKit2.SteamFriends.ProfileInfoCallback.
        //
        // Параметры:
        //   steamId:
        //     The SteamID of the friend to request the details of.
        //
        // Возвращает:
        //     The Job ID of the request. This can be used to find the appropriate SteamKit2.SteamClient.JobCallback<T>.
        public JobID RequestProfileInfo(SteamID steamId);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Сводка:
        //     This callback is fired in response to requesting profile info for a user.
        public sealed class ProfileInfoCallback : CallbackMsg
        {
            // Сводка:
            //     Gets the name of the city.
            public string CityName { get; }
            //
            // Сводка:
            //     Gets the name of the country.
            public string CountryName { get; }
            //
            // Сводка:
            //     Gets the headline.
            public string Headline { get; }
            //
            // Сводка:
            //     Gets the real name.
            public string RealName { get; }
            //
            // Сводка:
            //     Gets the recent playtime.
            [Obsolete("This property is obsolete as this value is no longer returned by Steam.")]
            public TimeSpan RecentPlaytime { get; }
            //
            // Сводка:
            //     Gets the result of requesting profile info.
            public EResult Result { get; }
            //
            // Сводка:
            //     Gets the name of the state.
            public string StateName { get; }
            //
            // Сводка:
            //     Gets the SteamKit2.SteamFriends.ProfileInfoCallback.SteamID this info belongs
            //     to.
            public SteamID SteamID { get; }
            //
            // Сводка:
            //     Gets the summary.
            public string Summary { get; }
            //
            // Сводка:
            //     Gets the time this account was created.
            public DateTime TimeCreated { get; }
        }
Я вызываю функцию Bot.SteamFriends.RequestProfileInfo(id);

Как мне теперь получить CityName? Написано

Results are returned in a SteamKit2.SteamFriends.ProfileInfoCallback

Но как мне получить эти значения в переменную?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2014, 14:34
Ответы с готовыми решениями:

Как получить значение value из li?
Добрый день имеется вот такой код &lt;form method=&quot;POST&quot; action=&quot;&quot;&gt; &lt;ul class=&quot;port&quot;...

Как получить значение
Суть такова, имеется таблица, с аккаунтами пользователей. В ней хранятся поля: id, nickname, money,...

как получить значение
Дано: &lt;SPAN class=m&gt;&lt;?&lt;/SPAN&gt;&lt;SPAN class=pi&gt;xml version=&quot;1.0&quot; encoding=&quot;windows-1251&quot;...

Как получить значение?
Делаю запрос в базу данных: $query = mysqli_query($connect, &quot;SELECT...

10
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.01.2014, 14:56 2
Цитата Сообщение от zebniq Посмотреть сообщение
как мне получить эти значения в переменную?
C#
1
var result = Bot.SteamFriends.RequestProfileInfo(id);
1
1 / 1 / 0
Регистрация: 20.01.2014
Сообщений: 8
24.01.2014, 15:06  [ТС] 3
Цитата Сообщение от nio Посмотреть сообщение
C#
1
var result = Bot.SteamFriends.RequestProfileInfo(id);
а какого типа тогда будет result? просто пробую так делать. Там число, а должны быть стоки, или класс.
1
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 5
24.01.2014, 15:39 4
Исполни код и посмотри тип который приобретет переменная result. Но как я понял он будет ProfileInfoCallback.
0
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
24.01.2014, 15:43 5
Нет, дело в том, что Bot.SteamFriends.RequestProfileInfo(id) вернёт вам JobID, то есть идентификатор работы. Я думаю, что вы уже поняли, что вся архитектура SteamKit основана на обратных вызовах (callback), таким образом сначала нужно зарегистрировать колбэк на SteamKit2.SteamFriends.ProfileInfoCallback, например:
C#
1
2
//OnProfileInfo - функция, которая будет вызвана, manager - мэнеджер колбэков
new Callback<SteamKit2.SteamFriends.ProfileInfoCallback>( OnProfileInfo, manager );
А потом уже вызывать ваш код, то есть
C#
1
Bot.SteamFriends.RequestProfileInfo(id);
Когда данные о профиле будут получены от серверов Steam, будет вызвана функция OnProfileInfo, ссылку на которую мы указали выше.
1
1 / 1 / 0
Регистрация: 20.01.2014
Сообщений: 8
24.01.2014, 15:58  [ТС] 6
Waveform,
Я не до конца понимаю, почему мне нужна ещё какая-то функция OnProfileInfo? То есть, что мне в ней написать, если я хочу просто получить строку от сервера? Конкретно обработчик ответа? По поводу менеджера, его тоже нужно объявлять?

типа:
C#
1
static CallbackManager manager;
это делать снаружи функции?
0
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
24.01.2014, 16:05 7
zebniq, просто строку вы не получите, вы получите объект-ответ типа ProfileInfoCallback. Да, мэнеджер нужно объявлять, более того, создать новый объект CallBackManager. Советую обратиться к примерам, которые лежат на гитхабе стимкита, в частности к примеру #2, где наглядно показано то, как работать с колбэками.
1
1 / 1 / 0
Регистрация: 20.01.2014
Сообщений: 8
24.01.2014, 16:56  [ТС] 8
Ух а вот за примеры огромное спасибо, я уже полдня их искал, как работать с колбеками, странно что не заметил, спасибо все большое за помощь. Постараюсь разобраться.

Добавлено через 48 минут
Написал

C#
1
2
3
4
5
6
7
8
 
msg.Handle<SteamClient.JobCallback<SteamFriends.ProfileInfoCallback>>(callback =>
            {
 
                log.Info("Profile: " + callback);
            });
 
Bot.SteamFriends.RequestProfileInfo(id);
и вижу в логе.
Profile: SteamKit2.SteamClient+JobCallback`1[SteamKit2.SteamFriends+ProfileInfoCallback]

блин) а как всё же данные вытащить??

пробую, например, log.Info("Profile: " + callback.CityName);

ругается
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.01.2014, 19:36 9
zebniq, напишите callback. (обратите внимание на точку), а затем нажмите ctrl+space(контрол и пробел), вам подсветится, какие поля/свойства есть у этого объекта.
Потому как
C#
1
log.Info("Profile: " + callback);
аналогичен такому коду:
C#
1
log.Info("Profile: " + callback.GetType().ToString());
что вы собственно и получаете.

И если log.Info - это ваш класс/метод, то небольшой хинт: методы должны быть глаголами, а не существительными/прилагательными итд
0
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
26.01.2014, 12:56 10
zebniq, попробуйте
C#
1
log.Info("Profile: " + callback.Callback.CityName);
0
1 / 1 / 0
Регистрация: 20.01.2014
Сообщений: 8
26.01.2014, 13:12  [ТС] 11
Спасибо, все работает, я разобрался
0
26.01.2014, 13:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2014, 13:12
Помогаю со студенческими работами здесь

Как получить значение из БД?
База данных аксес, привязала к проэкту средствами vs 2010, в базе одна таблица, по нажатию кнопки...

Как получить значение из БД
Как получить значение из бд C# ADO.NET. Например из таблицы Clients получить значение Имя по id

Как получить значение
Есть function checkInvite () { $.ajax({ type: &quot;POST&quot;, url: &quot;checkInvite.php&quot;, ...

Как получить значение Value?
как получить значения Value из такой переменной как не пробовал не получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru