在.NET Core 2.2中,AddJsonFile选项配置的默认值是什么?

5
根据某个明智的来源,有一个名为AddJsonFile的方法用于读取配置文件。其中一个签名允许指定可选reloadOnChange
IConfigurationRoot config = new ConfigurationBuilder()
  .SetBasePath(Directory.GetCurrentDirectory())
  .AddJsonFile("config.json", false, false)
  .Build();

然而,如果我使用未明确指定这些内容的签名,我找不到有关默认值的信息。我可以假设它是false,因为它是布尔值的默认值(即default(bool)false)。
但我更喜欢明确地声明并提供链接。
1个回答

8
根据此代码,如果您不提供参数,则它们将为false。请注意以下方法:请参阅https://github.com/aspnet/Configuration/blob/master/src/Config.Json/JsonConfigurationExtensions.cs
        /// <summary>
        /// Adds the JSON configuration provider at <paramref name="path"/> to <paramref name="builder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param>
        /// <param name="path">Path relative to the base path stored in 
        /// <see cref="IConfigurationBuilder.Properties"/> of <paramref name="builder"/>.</param>
        /// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
        public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder, string path)
        {
            return AddJsonFile(builder, provider: null, path: path, optional: false, reloadOnChange: false);
        }
}

正如您在问题中早些时候提到的,您可以使用该方法的另一个重载来设置reloadOnChange值。以下是来自微软开发者网络的示例代码:

public class Program
{

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);

                config.AddCommandLine(args);
            })
            .UseStartup<Startup>();
}

2
是的,这就让我感到怀疑了。通常情况下,为了简洁和简洁起见,我更喜欢不显式设置已经隐含默认值的参数。然而,我看到了许多将这两个参数设置为false的示例,这让我想到,也许这些参数默认设置为true,因此需要显式地进行虚假处理。现在我意识到这是一个误导性的例子,在许多博客中被反复复制。对于命名参数的过度规范化也是如此。这是不必要的,并且在我看来很令人困惑。 - Konrad Viltersten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接