1

私のクラスには次のコードがあります。

private static void SetUserMeta(string pUserToken, string pMetaKey, string pMetaValue, Action<bool> callback)
{
    BuddyClient client = CreateBuddy();
    bool rValue = false;

    client.LoginAsync((user, state) =>
    {
        if (state.Exception != null)
        {
            rValue = false;
        }
        else
        {
           client.Metadata.SetAsync((result, resultState) =>
            {
                if (resultState.Exception != null)
                {
                    rValue = false;
                }
                else
                { 
                   rValue = true;
                } 
            }, key: pMetaKey, value: pMetaValue);
        }

        callback(rValue);
    }, token: pUserToken);
 }

rValueそして、私は次のような他のメソッドからそれを取得して返したいです

public static void SetBuddyData(string pUserToken, BuddyData pMetaValue, Action<bool> callback)
{
    //my problem is here and I don't know how to get and return data from SetUserMeta
    return SetUserMeta(pUserToken, "SavedGameData", pMetaValue.Serialize());
}

また、アプリケーションからこの戻り値を呼び出したいと思います。これらのコードは私のライブラリにあります。どうすればいいですか?

4

1 に答える 1

0

SetUserMetaいいねにコールバックを 渡すだけ

public static void SetBuddyData(string pUserToken, BuddyData pMetaValue, Action<bool> callback)
{
    SetUserMeta(pUserToken, "SavedGameData", callback);
}

そしてSetBuddyData、このように呼び出します

SetBuddyData("my user token", myBundle, isLoggedIn => HandleUserLogin(isLoggedIn));

HandleUserLoginboolコールバックデータを処理しcallback(rValue);SetUserMetaメソッドで返されます。本体の例を次に示します

public static void HandleUserLogin(bool isLogged)
{
   Console.WriteLine("user is {0} logged in", isLogged ? "" : "not");
}

また、メソッドグループ構文を利用して、次のSetBuddyDataようなメソッドを呼び出すこともできます。

SetBuddyData("my user token", myBundle, HandleUserLogin);
于 2013-03-18T12:52:34.960 に答える