簡體   English   中英

具有返回值的匿名委托

[英]anonymous delegate with return value

[實際上,我不確定問題是否與匿名和委托有關。]

在我的應用程序中,我使用異步來創建新項目。 在AddNew方法中,它將調用repo類創建一個新項,然后將其添加到列表項。 create方法具有參數,但是具有返回值。

問題是我真的不知道如何使用匿名調用create方法。

代碼如下。

    protected void AddNew()
    {
        _repo.Create(() => AddToListItem(x)) // I want the value (x) that return from repository.Create to use with AddToListItem(x)
    }

    public P Create(Action completed = null)
    {
        var p = new P();
        Insert(p);
        return p;
    }

    public void Insert(P p, Action completed = null)
    {
        _service.Insert(p,
            () =>
            {
                if (onCompleted != null)
                {
                    onCompleted();
                }
            }
            );
    }

代替通用的Action<T>來實現無參數的Action

封裝具有單個參數且不返回值的方法。

您的代碼應如下所示:

public P Create(Action<P> completed = null)
{
    var p = new P();
    Insert(p, completed);
    return p;
}

public void Insert(P p, Action<P> completed = null)
{
    _service.Insert(p,
        () =>
        {
            if (completed != null)
            {
                completed(p);
            }
        }
        );
}

您還必須更改lambda表達式以匹配Action<P>

protected void AddNew()
{
    _repo.Create((x) => AddToListItem(x))
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM