私は2つのインターフェースを持っています:
IState
とIAction
。Stateには、GetActionsというメソッドがあります。これはIActionのコレクションを返します。アクションには次のメソッドがあります。Apply-状態に作用して、新しい状態を返します。
IStateは、getアクションで返すアクションの種類を制御するためにtypeパラメーターを取り、IActionは、アクションできる状態の種類を制御するためにtypeパラメーターを取ります。(並べ替え、実装)。州が同じタイプの州に作用できる行動のみを返すことを保証できるようにしたいと思います。
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)
問題ではありません。タイプパラメータが定義しているタイプと同じタイプであることを確認するために、タイプ制約を設定するにはどうすればよいですか?