Pregunta

Aquí está mi interfaz C#:

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

Estoy tratando de hacer una implementación en f# pero recibí un error en la palabra clave end. (inesperado end en el archivo de implementación)

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.

PD. ¿Cuál es este código en f#?

Template template = Template.Parse(stringToTemplate);
template.Render(Hash.FromAnonymousObject(model));
¿Fue útil?

Solución

Además de la respuesta de Chaospandion:

Una clase se puede definir así:

type ClassName(constructorArguments) =
  class
    ...
  end

o así:

type ClassName(constructorArguments) =
  ...

Entonces necesitas tanto o class y el end palabra clave o ninguno de ellos. Por lo general, la gente usa el formulario sin class y end.

Su otro fragmento de código se vería algo así:

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

Otros consejos

Dado que está implementando una interfaz, querrá usar esta sintaxis.

type TemplateService() = 
    interface ITemplateService with
        member this.RenderTemplate model (templateName:string):string = ""
        member this.RenderTemplate model (templateName:string, directory:string):string = ""
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top