Я ломаю голову над кодом, данным мне в предыдущем вопросе, который у меня был. Код здесь
В этой строке я получаю сообщение об ошибке, в котором указано неверное количество параметров. Я не совсем понимаю, в чем ошибка, поскольку все исследования, которые я делаю, показывают, что это правильное применение функции.
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