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从现在开始是一个代表?我不明白... –