Я пытаюсь обработать содержимое словаря на основе типа содержащегося элемента (String, Int, Datetime и т. Д.).Ниже приведен небольшой фрагмент теста, который загружает некоторые тестовые данные и затем извлекает их по типу.
Однако я получаю следующую ошибку несоответствия ограничений, которую я не понимаю - какие-либо идеи?
Информация об ошибке :
unmapdict.fsx (29,23): ошибка FS0193: Несоответствие ограничения типа.Тип 'String' не совместим с типом 'Type'
open System
open System.Collections.Generic
// Type for dict entries
type dStruct = {
ftype: Type;
fvalue:obj;
}
let main() =
printfn "\n>>>>>> Extract Dictionary Elements <<<<< \n"
let ddict = new Dictionary<string, dStruct>()
let str = "String Data"
let rstring = { ftype=str.GetType(); fvalue=str ;}
ddict.Add("String", rstring)
let intn = 999
let rint32 = { ftype=intn.GetType(); fvalue=intn ;}
ddict.Add("Int32", rint32)
let rdatetime = {ftype=System.DateTime.Now.GetType(); fvalue=System.DateTime.Now}
ddict.Add("DateTime", rdatetime)
// Extract dict value elements; emumerate data types
ddict
|> Seq.map ( fun (KeyValue(k,v)) -> v)
|> Seq.iter (fun v ->
// Error occurs here >>
match v.ftype with
| :?System.String -> printfn "String Found ";
| :?System.Int32 -> printfn "Integer Found ";
| :?System.DateTime -> printfn "DateTime Found ";
|_ -> printfn "Unmatched Element"
// printfn "Dict: ftype: %A; fvalue: %A" v.ftype v.fvalue
)
printfn "\n>>>>>> F# Done <<<<< \n"
main()