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

How to store configuration information in a .net Standard project

.net Standard 中似乎没有配置 app.config 或 web.config。 Url、ids 等设置可以存储在 .net Standard class 库项目中的什么位置。

该项目是独立的,并从实施者那里提取信息。它是一个客户端,使用它的应用程序不需要配置它命中的端点。

您无法将 app.config 文件添加到 class 库项目中,除非您自己做出一些弯曲和扭曲。将配置添加到您的库也没有任何意义。而是将配置添加到正在使用您的库的项目中。

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

将 class 库直接绑定到配置文件使得难以在代码中覆盖该配置。许多在 .NET Framework 中创建的库都遇到了这个问题,这在尝试使用现代依赖注入技术配置库时变得最痛苦。 Microsoft 有意在 .NET Standard 中增加了执行此操作的难度。

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

public class MyClassConfiguration
{
    public string Url { get; set; } = "https://example.com/some-default-location";
}

一种让你的库的使用者容易接受的方法是在 DI-friendly 构造函数注入 classes 中创建你的业务逻辑,然后制作一些外观 classes专门用于构建它们并提供默认值。完成这项工作的一个好方法是使用 Mark Seemann 的 DI-Friendly Library post.

中描述的流畅构建器模式
var foo =
   new FooBuilder().WithUrl("https://example.com/override-the-default").Create();

然后由您的库的使用者决定是将配置保留为代码还是从配置文件中读取并将其传递给您的库。