[英]Func delegate used as a parameter
我試圖了解下面的代碼實際上是做什么的。
我們有Submit
方法,該方法返回void
並接受兩個參數:
然后我們使用參數調用Submit
方法。
這部分代碼我聽不懂。
void Submit(Delegate d, params object[] arguments)
{
ServiceQueue.Get.Submit(d, arguments);
}
Submit(new Func<BusinessMetadataQueryDataContract,
AsyncCallback,
object,
IAsyncResult>(
this.Channel.BeginBusinessMetadataGet),
contract,
new AsyncCallback(
(iar) =>
{
BusinessMetadataDataContract outContract = null;
Action<Exception, OpusReturnType> response =
(e, ort) =>
{
SilverlightClient.UIThread.Run(() =>
{
this.BusinessMetadataGetActionCompleted(this,
new ActionCompletedEventArgs<BusinessMetadataDataContract>(
ort,
outContract,
e,
false,
asyncState));
});
};
try
{
response(null,
this.Channel.EndBusinessMetadataGet(
out outContract,
iar));
}
catch (Exception e)
{
response(e,
new OpusReturnType());
}
}),
asyncState);
Func
方法采用三個參數並返回值。
因此,我們有以下類型的參數:
我們有返回類型:
然后我們有: (this.Channel.BeginBusinessMetadataGet),
我不明白。 這是在做什么 我期待一個開括號(
和類型為BusinessMetadataQueryDataContract
的第一個參數,相反,我得到(this.Channel.BeginBusinessMetadataGet)
並且預期的參數位於第二個位置。
我一定在這里想念什么。
有什么幫助嗎? 謝謝!
this.Channel.BeginBusinessMetadataGet是實際的委托,具有您描述的簽名。 因此,第一個參數(Delegate d)是這樣的:
new Func<BusinessMetadataQueryDataContract,
AsyncCallback,
object,
IAsyncResult>(
this.Channel.BeginBusinessMetadataGet)
這從BeginBusinessMetadataGet方法創建一個委托。 在這之后是委托將使用的所有參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.