繁体   English   中英

在f#中实现接口

[英]Implementing an interface in f#

这是我的c#界面:

public interface ITemplateService
{
    string RenderTemplate(object model, string templateName);
    string RenderTemplate(object model, string templateName, string directory);
}

我正在尝试在F#中进行实现,但在关键字end出错。 (实现文件中的意外end

module TemplateService

open DotLiquid

type TemplateService = 
    inherit ITemplateService

        member this.RenderTemplate model (templateName:string):string = ""
        member this.RenderTemplate model (templateName:string, directory:string):string = ""
end//error here.

PS。 F#中的代码是什么:

Template template = Template.Parse(stringToTemplate);
template.Render(Hash.FromAnonymousObject(model));

由于您要实现接口,因此您需要使用此语法。

type TemplateService() = 
    interface ITemplateService with
        member this.RenderTemplate model (templateName:string):string = ""
        member this.RenderTemplate model (templateName:string, directory:string):string = ""

除了ChaosPandion的回答:

类可以像这样定义:

type ClassName(constructorArguments) =
  class
    ...
  end

或者像这样:

type ClassName(constructorArguments) =
  ...

因此,您既需要classend关键字,也不需要它们。 通常人们使用没有classend的表单。

您的其他代码段看起来像这样:

let template = Template.Parse stringToTemplate
template.Render (Hash.FromAnonymousObject model)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM