2011-03-15 50 views
4

這裏的接口是我的C#接口:實現在F#

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)); 
+0

的「F#基礎」這裏http://msdn.microsoft.com/en-us/fsharp/cc835246標籤有一些很好的語法鏈接。 – Brian 2011-03-15 06:06:17

回答

3

除了ChaosPandion的回答是:

一類可以這樣定義:

type ClassName(constructorArguments) = 
    class 
    ... 
    end 

或像這樣:

type ClassName(constructorArguments) = 
    ... 

所以,你需要或者兩個classend關鍵字或它們中的任何一個。通常人們使用 而沒有classend

你其他的代碼片段會是這個樣子:

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

由於你正在實現一個接口,所以你需要使用這個語法。

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

+1謝謝... – 2011-03-15 03:11:30