Не думаю, что есть что-то особенное в использовании Ninject в F #.Пример Ninject для Samurai / IWeapon / Sword выглядит следующим образом:
open Ninject
type IWeapon =
abstract Hit: string -> unit
type Sword() =
interface IWeapon with
member x.Hit s = printfn "Slash %s" s
type Samurai(weapon: IWeapon) =
member x.Attack target =
weapon.Hit target
[<EntryPoint>]
let main args =
use kernel = new StandardKernel()
kernel.Bind<IWeapon>().To<Sword>() |> ignore
kernel.Bind<Samurai>().ToSelf() |> ignore
let samurai = kernel.Get<Samurai>()
samurai.Attack "enemy"
0
Функции F #, такие как неявные конструкторы и вывод типов, делают код довольно лаконичным.