ASP.NET中依赖注入容器传入的IConfiguration是否可写入?
关于IConfiguration实例写入的安全性疑问
根据.NET配置文档说明:
给定一个或多个配置源,IConfiguration类型提供配置数据的统一视图。配置是只读的,配置模式并非设计为可通过编程方式写入。
然而IConfiguration的属性暴露了setter,我可以在它被依赖注入到类中后,为实例添加值。之后我可以手动将该实例传入构造函数和方法,并读取已设置的属性。如下例所示,我可以将_config传入Bar的构造函数,它能读取"MyKey"并返回合适的Bar实例。
我通过测试发现,每个MyClass实例似乎都持有独立的IConfiguration实例;在一个MyClass实例中设置"MyKey"不会影响另一个实例中的"MyKey"值。
但我原本理解IConfiguration应代表应用全局配置,由多个源汇总而成,在启动时以不可变形式暴露给应用代码。是否有文档说明以这种方式添加键是安全的,且不会让未被创建它的MyClass设置值的Bar构造函数读取到该值?
public class MyClass { private IConfiguration _config; public MyClass(IConfiguration config) { _config = config; } public Bar Foo() { _config["MyKey"] = "true"; return new Bar(_config); } }
内容的提问来源于stack exchange,提问作者Brosuke
相关产品推荐
相关产品推荐

