0

今天我正在寻找一些带有 ilspy 的项目我不明白如何像这样使用 Actions,在一个类中调用了这个方法

    public void Login(Action success, Action<bool> failure)
    {
        if (!FB.IsInitialized)
        {
            Debug.Log("[FB] Not yet initialized. Will init again!");
            FB.Init(new InitDelegate(this.OnInitComplete), null, null);
            return;
        }
        new LoginWithReadPermissions(this.READ_PERMISSIONS, delegate
        {
            ServiceLocator.GetDB().SetBool("facebookBound", true, false);
            this.OnLoginCompleted(success, failure);
        }, delegate
        {
            failure(false);
        });
    }

这是上述方法调用的另一个类

    public class LoginWithReadPermissions
{
    private readonly Action _failureCallback;

    private readonly Action _successCallback;

    public LoginWithReadPermissions(string[] scope, Action success, Action failure)
    {
        this._successCallback = success;
        this._failureCallback = failure;
        FB.LogInWithReadPermissions(scope, new FacebookDelegate<ILoginResult>(this.AuthCallback));
    }

    private void AuthCallback(ILoginResult result)
    {
        if (result.Error == null && FB.IsLoggedIn)
        {
            this._successCallback();
        }
        else
        {
            this._failureCallback();
        }
    }
}

有人可以解释那里发生的事情吗?我从未遇到过这种 Action 用法。感谢您的回复。

4

1 回答 1

0
public void Login(Action success, Action<bool> failure)
{
    if (!FB.IsInitialized)
    {
        Debug.Log("[FB] Not yet initialized. Will init again!");
        FB.Init(new InitDelegate(this.OnInitComplete), null, null);
        return;
    }
    new LoginWithReadPermissions(this.READ_PERMISSIONS, delegate
    {
        ServiceLocator.GetDB().SetBool("facebookBound", true, false);
        this.OnLoginCompleted(success, failure);
    }, delegate
    {
        failure(false);
    });
}

上面的代码只是这个的简写:

public void Login(Action success, Action<bool> failure)
    {
        Action successAction = () =>
        {
            ServiceLocator.GetDB().SetBool("facebookBound", true, false);
            this.OnLoginCompleted(success, failure);
        };

        Action failureAction = () =>
        {
            failure(false);
        };

        if (!FB.IsInitialized)
        {
            Debug.Log("[FB] Not yet initialized. Will init again!");
            FB.Init(new InitDelegate(this.OnInitComplete), null, null);
            return;
        }
        new LoginWithReadPermissions(this.READ_PERMISSIONS, successAction, failureAction);
    }
于 2017-02-20T14:29:54.107 回答