Вы можете создать метод, основанный на цитатах F #, который извлекает метод интерфейса безопасным для типов способом.
open FSharp.Quotations
open FSharp.Quotations.Patterns
let getMethodName (e: Expr<'T -> 'U>) =
match e with
| Lambda (_, Call (_, mi, _)) -> mi.Name
| _ -> failwith "%A is not a valid getMethodName expression, expected Lamba(_ Call(_, _, _))"
type ISomeInterface =
interface
abstract SomeMethod: unit -> unit
end
[<EntryPoint>]
let main argv =
let name = <@ fun (i : ISomeInterface) -> i.SomeMethod () @> |> getMethodName
printfn "%s" name
0