Implementación de una interfaz en F#
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));
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