次のフラグメントがあるとします。
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#の両方から呼び出されるクラスを定義することなので、両方の言語からネイティブに機能させたいと考えています。