我有来自http://sourceforge.net/p/onvifdm/code/HEAD/tree/
的来源当我尝试构建此解决方案时,我在onvif.utils
项目中遇到以下问题。
use! response = request.AsyncGetResponse() |> Async.Map(fun x-> x:?>HttpWebResponse)
Error: Method or object constructor 'Map' not found
D:\Working\onvifdm\onvifdm-code-96-trunk\onvif\onvif.utils\OdmSession.fs
答案 0 :(得分:1)
您可以使用以下代码作为替代:
let! webResponse = request.AsyncGetResponse()
use response = webResponse:?>HttpWebResponse
此外,您可以将自己的扩展名编写为异步类型 - 这里有example如何完成。您只需要为上面的代码实现高阶函数。
答案 1 :(得分:0)
对于那些仍在寻找答案的人来说,问题是Async引用了错误的类。将其更改为Microsoft.FSharp.Control.Async,问题应该解决。
答案 2 :(得分:0)
这是一个扩展Async的功能,该功能取自understanding map上的有用信息。
module Async =
let map f op = async {
let! x = op
let value = f x
return value
}
具有类型签名('a -> 'b) -> Async<'a> -> Async<'b>
例如-
let onInts = async { return 1 }
...是async<int>
,并且...
let onStrings = Async.map (fun x -> x.ToString()) onInts
...产生一个Async<string>
。