2
私はいくつかのC#ライブラリといくつかのインタフェースを行い、オブジェクトのキャストを行う必要があります。ダウンキャストのタイプを引数として渡すことで解決できるコードの複製がいくつかあります。F#は関数の引数としてダウンキャスト型を提供します
// transform exceptions into Option type
let tryFn fn =
try Some(fn()) with ex -> None
let tryCastString (o: obj) = tryFn (fun() -> o :?> string)
let tryCastUInt64 (o: obj) = tryFn (fun() -> o :?> uint64)
// I would like to do something like the following
let tryCast (o: obj) (t: type) = tryFn (fun() -> o :?> t)