在f#中实现接口

时间:2011-03-15 02:52:11

标签: c# interface f# c#-to-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));

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

除了ChaosPandion的回答:

可以像这样定义一个类:

type ClassName(constructorArguments) =
  class
    ...
  end

或者像这样:

type ClassName(constructorArguments) =
  ...

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

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

let template = Template.Parse stringToTemplate
template.Render (Hash.FromAnonymousObject model)
相关问题