次のフラグメントがあるとします。
type Foo() =
static member Test (act : unit -> unit) = act()
static member Test (act : Action) = Foo.Test act.Invoke
最後の行に次のようなエラーが表示されます。このプログラムポイントより前のタイプ情報に基づいて、メソッド'Test'の一意のオーバーロードを判別できませんでした。タイプ注釈が必要になる場合があります。
残念ながら、型アノテーション(act.Invoke : unit -> unit)はあいまいさを解決せず、それを修正するアノテーションを見つけることができません。Actionのバージョンをバージョンのラッパーにしたいと思い->ます。私の特定のユースケースは、F#とC#の両方から呼び出されるクラスを定義することなので、両方の言語からネイティブに機能させたいと考えています。