【发布时间】:2012-05-05 08:54:38
【问题描述】:
我有两个接口:
IState 和 IAction。
State 有一个方法:GetActions - 它返回 IActions 的集合。
一个 Action 有一个方法:Apply - 它作用于一个 State,返回一个新的 State。
IState 采用类型参数来控制它通过 get 操作返回的操作类型, IAction 接受一个类型参数来控制它可以作用于哪种状态。 (按排序,我 ment 实现)。 我希望能够保证 State 只返回可以作用于同一类型状态的操作。
type IAction<'S when 'S:>IState> =
abstract member Apply : 'S->'S
and IState<'A when 'A:>IAction<'S when 'S:> typeof(this)>> =
abstract member GetActions : seq<'A>
但显然typeof(this) 不是一个东西。
我怎样才能有一个类型约束来确保我的类型参数的类型等于我定义的类型?
【问题讨论】: