F#在主构造函数上导入构造函数

Dam*_*ian 2 f# mef

我正在使用MEF,我想ImportingConstructorAttribute在我的主要构造函数上添加一个.我正在使用以下技巧来指定ImportingConstructor哪个不会破坏我的对象的封装或不变性.

[<Export>]
type IntradayEngine(logger:ILogger, dummy) =

    [<ImportingConstructor>] 
    new(logger) = 
        IntradayEngine(logger, None)

    member x.Start =
        ignore

    member x.Stop = 
        ignore
Run Code Online (Sandbox Code Playgroud)

我在其中看到的唯一其他方法是:1.通过ImportAttributeon属性使用属性注入(这需要使该属性可变,并且我不是属性注入的粉丝)2.创建一个'默认'主构造函数并添加另一个我添加依赖项的构造函数(允许我的对象处于我不想要的状态)

反正有没有打破我的对象的可访问性,可变性或状态?

Dan*_*iel 8

您可以通过将属性放在类型名称和参数之间来将属性放在主构造函数上.

[<Export>]
type IntradayEngine [<ImportingConstructor>](logger:ILogger) =

    member x.Start =
        ignore

    member x.Stop = 
        ignore
Run Code Online (Sandbox Code Playgroud)