我想实现在F#鸭打字,我发现,你可以有一个member constraint in F# generics如下:F#泛型类型约束和鸭打字
type ListEntryViewModel<'T when 'T : (member Name : string)>(model:'T) =
inherit ViewModelBase()
member this.Name with get() = model.Name
然而,上面的代码不会当我编译尝试引用该属性。我得到一个编译器错误:
This code is not sufficiently generic. The type variable ^T when ^T : (member get_Name : ^T -> string) could not be generalized because it would escape its scope.
是否可以通过通用约束实现鸭子打字?
请注意,这不是“鸭子打字”,而是结构性(子)打字。 – Eyvind