К сожалению, если вы хотите использовать интерфейс и передать значение конструктору, nyinyithann ответ правильный. Вы можете установить публичные свойства в вызове конструктора следующим образом.
type TemplateService() =
let mutable templateDirectory = ""
member this.TemplateDirectory
with get() = templateDirectory
and set directory =
if directory = null then
raise (new System.ArgumentNullException "templateDirectory")
templateDirectory <- directory
let template = TemplateService(TemplateDirectory = "root")
Теперь, если вы хотите использовать интерфейс, это не сработает.
type ITemplateService =
abstract TemplateDirectory : string with get, set
type TemplateService() =
let mutable templateDirectory = ""
interface ITemplateService with
member this.TemplateDirectory
with get() = templateDirectory
and set directory =
if directory = null then
raise (new System.ArgumentNullException "templateDirectory")
templateDirectory <- directory
let template = TemplateService(TemplateDirectory = "root") // error
Вы вынуждены использовать эту уродливую вещь.
let template = TemplateService()
(template :> ITemplateService).TemplateDirectory <- "root"