是否可以使用Ninject在F#中进行隐式构造函数注入?如果是这样,怎么样?
我试图将[<Inject>]
属性放在类型定义上,但是我收到了一个错误,它无效。
以下是我的尝试:
[<Inject>]
type Blah(x : ISword) =
答案 0 :(得分:2)
规范允许如下:
class-type-defn :=
type-name primary-constr-args_opt object-val_opt '=' class class-type-body end
,其中
primary-constr-args :=
attributes_opt accessopt (simple-pat, ... , simple-pat)
因此,您只需将代码更改为
即可type Blah [<Inject>](x : ISword) =
答案 1 :(得分:2)
Inject
属性仅适用于Property setter injection。构造函数注入是隐含的。只需创建绑定,然后使用构造函数注入创建kernel.Get<Blah>()
和Blah
。
答案 2 :(得分:1)
这是F#中的构造函数注入:
type Foo(bar : IBar) =
// class members etc. here
任何要求你在类型上打一个属性以便理解它的库,都是做错了;选择另一个图书馆。