如何在.net标准项目中存储配置信息

如何在.net标准项目中存储配置信息,.net,.net-standard,.net-standard-2.0,.net,.net Standard,.net Standard 2.0,.net标准中似乎没有配置app.config或web.config。 在.net标准类库项目中,Url、ID等设置可以存储在何处 该项目是自包含的,从实现者那里提取信息。它是一个客户端,使用它的应用程序不需要配置它所访问的端点。如果不进行一些弯曲和扭曲,就无法将app.config文件添加到类库项目中。此外,将配置添加到库中也没有任何意义。而是将配置添加到正在使用库的项目中 类库通常没有配置,因此它们可以适应调用项目提供的配置。将类库直接绑定到配置文件会导致难以在代码中覆盖该配置。许多在.NE

.net标准中似乎没有配置app.config或web.config。 在.net标准类库项目中,Url、ID等设置可以存储在何处


该项目是自包含的,从实现者那里提取信息。它是一个客户端,使用它的应用程序不需要配置它所访问的端点。

如果不进行一些弯曲和扭曲,就无法将app.config文件添加到类库项目中。此外,将配置添加到库中也没有任何意义。而是将配置添加到正在使用库的项目中


类库通常没有配置,因此它们可以适应调用项目提供的配置。

将类库直接绑定到配置文件会导致难以在代码中覆盖该配置。许多在.NETFramework中创建的库都遇到了这个问题,当尝试使用现代依赖项注入技术配置库时,这个问题变得最痛苦。微软有意在.NET标准中增加这一点的难度

与使用文件配置现代库不同,您的目标应该是允许通过对象构造函数传递配置,就像任何其他依赖项一样。如果您的配置URL具有逻辑默认值,那么您可以简单地将这些默认值放入配置对象中

public class MyClassConfiguration
{
    public string Url { get; set; } = "https://example.com/some-default-location";
}
让库的使用者易于接受的一种方法是,在DI友好的构造函数注入类中创建业务逻辑,然后创建一些专门用于构造它们和提供默认值的facade类。实现这一点的一个好方法是使用如Mark Seemann所述的fluent builder模式


然后,库的使用者可以决定是将配置作为代码保存,还是从配置文件中读取并将其传递给库。

这是有道理的,但在我的例子中,类库中有业务逻辑和URL端点。它从实现者那里提取了大量数据。您可以拥有一个XML文件并从他们的文档中读取内容,或者具有从单独提供的json文件中读取资源的功能。您也可以将其添加到构建中,但一旦创建了nuget包,适应性就会丧失。因此,只有自己将这些配置包装到模型中,并给调用程序一个初始化它们的方法,才有意义。从.net标准中读取config/ini的步骤
var foo =
   new FooBuilder().WithUrl("https://example.com/override-the-default").Create();