Xamarin.ios 如何正确实现类型转发?

Xamarin.ios 如何正确实现类型转发?,xamarin.ios,xamarin.android,portable-class-library,Xamarin.ios,Xamarin.android,Portable Class Library,我将为Microsoft.Threading.Tasks.Extensions编写一个垫片程序集,以便能够构建Mono项目(我描述了这个问题),但有几件事我不确定 1) 程序集包含以下方法(某些方法具有多个重载): 从取消开始 手工完成 可读异步 写同步 FlushAsync 复制同步 CopyToAsyncInternal ReadBlockAsync ReadLineAsync ReadToEndAsync 写同步 GetResponseAsync GetRequestStreamAsyn

我将为Microsoft.Threading.Tasks.Extensions编写一个垫片程序集,以便能够构建Mono项目(我描述了这个问题),但有几件事我不确定

1) 程序集包含以下方法(某些方法具有多个重载):

  • 从取消开始
  • 手工完成
  • 可读异步
  • 写同步
  • FlushAsync
  • 复制同步
  • CopyToAsyncInternal
  • ReadBlockAsync
  • ReadLineAsync
  • ReadToEndAsync
  • 写同步
  • GetResponseAsync
  • GetRequestStreamAsync
我如何找出应该转发哪些类型以及要实现哪些方法?那些应该转发的,我应该重定向到哪里?在这种情况下,我怀疑我必须提供实现,因为它们不存在于Mono程序集中,但我如何确定呢

2) 我是否需要实现或键入转发所有内容,或者只转发代码中使用的内容?在后一种情况下,如果我跳过一些必需的类型或方法,我怎么知道呢?我注意到,我没有因为缺少方法而得到编译器错误——它只抱怨缺少程序集,而没有提示它正在寻找什么方法。如果我留下未转换的类型或未实现的方法,我会从编译器那里得到任何提示吗


更新。这里定义了两种类型:System.Threading.Tasks.TaskServices和AsyncExtensions。Android/Touch项目都不知道它们。我只能转发程序集引用的类型,而这两个类型不是。这是否意味着我必须实现它们?

您不应该真正使用类型转发方法,而应该使用类型转发类型

基于我对System.Windows和System.Net所做的工作,我的建议是从转发引用程序集中的所有类型开始

这样做之后——当您构建时——您可能会发现一些无法向前键入的内容。对于那些您可以:

  • 只是错过了它们——在这种情况下,一些代码将在运行时失败,并出现某种类型的
    Missing
    异常
  • 实现存根版本-具有
    NotImplementedException
  • 实现替换版本(尽管我会避免这样做-最好与Mono的人谈谈并尝试修补Mono的实现)

我相信
Async
代码的新Mono3实现是非常完整的,所以我认为您不应该遇到太多问题。

很抱歉造成混淆。我的意思是转发类型和实现方法,但写了其他东西:-),所以我猜是Mono.Android和monotouch程序集,我应该转发缺少的类型。我会试试看。非常感谢!嗯,请看我的更新。其中只有两种类型,但引用的程序集中不存在任何类型。既然我只能转发已知(引用的)类型,我该怎么做呢?定义假类型?这些方法(扩展方法?)是在mono的其他类型中实现的吗?如果是,您可以编写垫片来转发它们(在堆栈上再调用一次)——我希望这意味着您可以避免从头开始编写方法。另一个要查看的资源是skeet先生-我想他写了很多TPL堆栈“为了好玩”,“这些方法(扩展方法?)是用mono中的其他类型实现的吗?”-我知道不是,但我需要搜索。基本上,整个Mono堆栈对我来说都是新的,所以这些天我做了很多发现,转发不存在的类型的挑战增加了更多的乐趣。