open Microsoft.Extensions.Configuration
let getLogger (env: #ILoggerProvider) = env.Logger
type IConfigurationProvider =
abstract Configuration: IConfiguration
let getConfiguration (env: #IConfigurationProvider) = env.Configuration
let logger = getLogger env
logger.Debug("Do something")
let doSomethingWithConfiguration env =
let logger = getLogger env
let configuration = getConfiguration env
let input = configuration.["input"]
inherit IConfigurationProvider
let createEnvironment (logger, configuration) =
member self.Logger = logger
member self.Configuration = configuration }
let nlogTarget = new Targets.ConsoleTarget(Layout = Layouts.SimpleLayout("${message}"))
let nLogConfig = Config.LoggingConfiguration()
nLogConfig.AddRuleForAllLevels(nlogTarget)
LogManager.Configuration <- nLogConfig
LogManager.GetCurrentClassLogger()
let createConfiguration () =
.AddInMemoryCollection(dict ["input", "Some input"])
let logger = createLogger ()
let configuration = createConfiguration ()
let env = createEnvironment (logger, configuration)
doSomethingWithConfiguration env