powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / callback вопрос
6 сообщений из 6, страница 1 из 1
callback вопрос
    #38536798
zebn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я новичок в 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 / 0
callback вопрос
    #38536958
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) откройте для себя комментарий с 3 слэшами. Над "public JobID RequestProfileInfo" наберите /// и увидите кое-что интересное.

2) Callback - это метод. Передавая ссылку на него (делегат) куда-то, вы передаете право вызова этого метода этому "куда-то". Пока он не вызовет, вы никаких значений не получите.
...
Рейтинг: 0 / 0
callback вопрос
    #38537031
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebn, RequestProfileInfo() возвращает JobID с помощью которого можно получить JobCallback<T>. Возможно там и будет экземпляр ProfileInfoCallback.

И, кстати, термин callback здесь явно неправильно употребляется. Потому что callback это метод или делегат, но никак не обычный класс.
...
Рейтинг: 0 / 0
callback вопрос
    #38537285
zebn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
	

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 / 0
callback вопрос
    #38537316
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebn, ответы на подобные вопросы ищутся элементарно путем изучения типа SteamClient.JobCallback<T>. Там есть поле Callback типа T через которое и можно получить искомое.
Код: c#
1.
2.
3.
4.
5.
msg.Handle<SteamClient.JobCallback<SteamFriends.ProfileInfoCallback>>(callback =>
            {
                 log.Info("City: " + callback.Callback.CityName);
            });
Bot.SteamFriends.RequestProfileInfo(id);



P.S. В следующий раз вместо огрызков кода лучше приводить название библиотеки которой ты пользуешься. В данном случае SteamKit .
...
Рейтинг: 0 / 0
callback вопрос
    #38537343
zebn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! буду знать на будущее
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / callback вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]