此类型定义有效:
type Model<'t,'u when 't :> seq<'u> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)
但是,对我来说,'u这里是多余的,但下一个定义是:
type Model<'t when 't :> seq<_> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)
产生错误:
此声明中不允许使用匿名类型变量-
F# Compiler (715)
最紧凑的形式:
type Model<'t>(query:unit -> #seq<'t>) = class end
Run Code Online (Sandbox Code Playgroud)
在实例创建过程中:
Query.users |> Model
Run Code Online (Sandbox Code Playgroud)
产生错误:
类型约束不匹配。类型
unit -> (string * int) list
与类型不兼容unit -> 'a
F# Compiler (193)
可能是由于此处所述,为什么记录类型定义中不允许使用灵活类型?。但是无论如何,错误说明对我来说还是不清楚的,用(string * int) list代替代替有'a什么问题?
实类型Model是数据库查询的包装,它实现INotifyPropertyChanged并包含mutable …