f#中具有属性赋值的多个构造函数

Sha*_*ean 3 f#

我想有一个空白的构造函数和一个接受参数并将其分配给公共属性的构造函数重载.

这是我被困的地方:

type TemplateService() = 
    interface ITemplateService with

        //Properties
        member TemplateDirectory = ""

        //Constructors
        new (templateDirectory:string) = //Error here.
            if (templateDirectory == null) then
                raise (new System.ArgumentNullException("templateDirectory"))
            TemplateDirectory = templateDirectory;
Run Code Online (Sandbox Code Playgroud)

它给了我错误:对象表达式中的'意外关键字'new'.预期的"会员","覆盖"或其他令牌.

如果我使用member,该属性TemplateDirectory会出现此错误:

This instance member needs a parameter to represent the object being invoked. Make the member static or use the notation 'member x.Member(args) = ...'

nyi*_*ann 6

你可以试试这个.

type TemplateService(templateDirectory : string) = 
    do
        if templateDirectory = null then nullArg "templateDirectory"

    new() = TemplateService("")

    interface ITemplateService with
        member this.TemplateDirectory = templateDirectory
Run Code Online (Sandbox Code Playgroud)