0
我想了解下面的代碼實際上做了什麼。Func委託用作參數
我們有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)
和預期的參數位於第二個位置。
我必須在這裏失去一些東西。
任何幫助?謝謝!
爲什麼有人想從一個方法創建委託?對於我來說,代表就像某些方法遵循的模式。它在這裏如何工作? –
代表是某種方式的「模式」,但它們與該語言中的任何其他類型一樣。從一個方法創建一個委託的事情是很常見的,而且在lamda表達式之前或多或少是唯一的方法。在某些情況下,您可以只使用方法作爲參數,但我不確定這是適用於您的情況,我需要查看更多的代碼。 –
好的......所以我們可以說這種方法讓我們說ABC從現在開始是一個代表?我不明白... –