Решение kvb - единственное, которое будет работать для общего случая (когда вы хотите иметь возможность указывать имя свойства во время выполнения).
Однако, если вы знаете имя свойства при компиляции-time, и вы также хотите требовать , чтобы свойство присутствовало на любом входе, вы можете использовать статическое ограничение F #, например:
// Define the 'toto' operator
let inline toto (a : ^a) =
(^a : (member Toto: string with get) (a))
type MyType () =
member __.Toto with get () = "Toto"
// Create an instance of MyType
let t = MyType()
printf "The song is 'Africa', by %s" (toto t)