簡體   English   中英

Func委托用作參數

[英]Func delegate used as a parameter

我試圖了解下面的代碼實際上是做什么的。

我們有Submit方法,該方法返回void並接受兩個參數:

  • 代表d
  • 無限制的任何參數

然后我們使用參數調用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方法采用三個參數並返回值。

因此,我們有以下類型的參數:

  • BusinessMetadataQueryDataContract
  • 的AsyncCallback
  • 賓語

我們有返回類型:

  • IAsyncResult的

然后我們有: (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.

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