F#主构造函数上的导入构造函数
我正在使用MEF,我想在我的主构造函数上添加一个F#主构造函数上的导入构造函数,f#,mef,F#,Mef,我正在使用MEF,我想在我的主构造函数上添加一个ImportingConstructorAttribute。我使用以下技巧来指定一个ImportingConstructor,它不会破坏对象的封装性或不变性 [<Export>] type IntradayEngine(logger:ILogger, dummy) = [<ImportingConstructor>] new(logger) = IntradayEngine(logger
ImportingConstructorAttribute
。我使用以下技巧来指定一个ImportingConstructor
,它不会破坏对象的封装性或不变性
[<Export>]
type IntradayEngine(logger:ILogger, dummy) =
[<ImportingConstructor>]
new(logger) =
IntradayEngine(logger, None)
member x.Start =
ignore
member x.Stop =
ignore
[]
类型日内引擎(记录器:ILogger,虚拟)=
[]
新(记录器)=
日内引擎(记录器,无)
成员x.开始=
忽视
成员x.停止=
忽视
我对这一点的其他看法是:
1.通过属性上的ImportAttribute
使用属性注入(这需要使该属性可变,我不喜欢属性注入)
2.创建一个“默认”主构造函数并添加另一个构造函数,在该构造函数上添加依赖项(允许我的对象处于我不想要的状态)
在不破坏我的对象的可访问性、易变性或状态的情况下,是否仍然可以这样做 您可以通过将属性放在类型名和参数之间,将其放在主构造函数上
[<Export>]
type IntradayEngine [<ImportingConstructor>](logger:ILogger) =
member x.Start =
ignore
member x.Stop =
ignore
[]
类型IntradayEngine[](记录器:ILogger)=
成员x.开始=
忽视
成员x.停止=
忽视
哇,超级直观。