由于.NET Standard中不存在Network.findOneAndUpdate({
"network.stations.id": req.params.station_Id
}, {
"network.stations.$.free_bikes": req.body.free_bikes
}, {
new: true,
fields: "network.stations"
}, (err, doc) => console.log(doc))
// I want doc to somehow point only to a single station instead of
// several stations like it currently does.
,因此检索正在执行的程序集的应用程序设置的最佳方法是什么,无论是ConfigurationManager
还是web.config
,在.NET标准类库中?
我们有三个项目:
在.NET Standard类lib中,我们有一个URL,需要根据其部署的环境进行更改。
这适用于.NET Core应用程序,我们只需将URL添加到相应的appSettings.{env}.json
文件中,将适当的值添加到DI容器中,然后使用appSettings.{env}.json
库来检索配置
但是,我们还需要从我们的.NET Framework 4.6.1应用程序中调用库,但由于没有方法(至少没有我能找到的)从Microsoft.Extensions.Options
文件中检索值,我们没有很好的方法在类库中设置URL。
我们现在通过将URL变量设置为静态并在我们引用它的每个.NET Framework项目的web.config
方法中设置其值来解决这个问题,我们通过appSetting确定它是哪个环境我们添加到每个web.config的密钥,然后根据环境手动设置URL。
是否有更强大的方法来处理从.NET标准类库中的.NET Core和.NET Framework应用程序检索appSettings值? 我们最好只在类库中设置值。
答案 0 :(得分:2)
在调用库之前,您应该从配置中读取值,并通过参数将其传递给方法或构造函数。
通常,库代码不应该依赖于其主机环境配置的副作用。这样做会使重用代码或有效测试变得非常困难。