f#中具有属性分配的多个构造函数 [英] Multiple Constructors in f# with property assignment

查看:72
本文介绍了f#中具有属性分配的多个构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to have a constructor that is blank and a constructor overload that accepts a parameter and assign it to a public property.

这就是我被困住的地方:

This is where I am stuck:

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;

它给了我错误:Object表达式中出现了意外的关键字"new".预期的成员",替代"或其他令牌.

It gives me the error: `Unexpected keyword 'new' in the Object expression. Expected 'member', 'override' or other token.

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

If I use member, the property TemplateDirectory gives this error:

此实例成员需要一个参数来表示正在调用的对象.使成员成为静态成员或使用符号'member x.Member(args)= ...'

推荐答案

您可以尝试一下.

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

    new() = TemplateService("")

    interface ITemplateService with
        member this.TemplateDirectory = templateDirectory

这篇关于f#中具有属性分配的多个构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆