为什么BeginInvoke不返回AsyncResult类型的引用?

Asp*_*Net 7 .net c# delegates

当您调用委托对象的BeginInvoke时,系统会创建AsyncResult类型的对象,但BeginInvoke会返回IAsyncResult类型的引用(指向AsyncResult实例).为什么BeginInvoke不返回AsyncResult类型的引用?

感谢名单

Ree*_*sey 8

这是基于标准接口的编程.

通过返回IAsyncResult,框架可以在以后随时更改内部实现,而不会破坏针对框架API编写的代码.实质上,这告诉我们,作为开发人员,如果满足接口(IAsyncResult),我们不应该关心使用什么类型的实现.

相反,如果返回了实际的AsyncResult类,那么更改为其他类将破坏现有代码.

此外,这允许框架在多个位置使用相同的接口(IAsyncResult),无论AsyncResult类是否合适.我个人已经利用了这一点,因为我已经创建了自己的异步函数,它返回由不同类支持的IAsyncResult,它存储了对我来说很重要的信息.这允许我自己的代码像框架一样工作,而不会限制我对框架的实现.