f#中具有属性分配的多个构造函数 [英] Multiple Constructors in f# with property assignment
本文介绍了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屋!
查看全文