我對在前面的SO問題中給予我的一些代碼感到困惑。 Code hereF#錯誤:錯誤的參數數
在這一行,我得到一個錯誤,說我有一個無效的參數數量。我不完全明白錯誤是什麼,因爲我所做的所有研究都提出了這個函數的正確應用。
let result = Seq.to_list(Microsoft.FSharp.Compatibility.Seq.generate_using opener generator)
這是怎麼回事?爲什麼我會遇到這種錯誤?
編輯:我用的是PowerPack.dll參考和MySQL.Data參考
代碼首戰&發電機下面:
let opener() =
let command = connection.CreateCommand(CommandText = sql, CommandType = System.Data.CommandType.Text)
command.ExecuteReader()
和發電機...
let generator<'a> (reader : System.Data.IDataReader) =
if reader.Read() then
let t = typeof<'a>
let props = t.GetProperties()
let types = props
|> Seq.map (fun x -> x.PropertyType)
|> Seq.to_array
let cstr = t.GetConstructor(types)
let values = Array.create reader.FieldCount (new obj())
reader.GetValues(values) |> ignore
let values = values
|> Array.map (fun x -> match x with | :? System.DBNull -> null | _ -> x)
Some (cstr.Invoke(values) :?> 'a)
else
None
這裏發佈開罐器和發生器的類型會有所幫助 - 當你將鼠標懸停在它們上面時,它們有什麼類型? – Brian 2009-01-14 00:19:48
開啓器/發生器在鏈接 – 2009-01-14 00:26:01