[英]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.