如何在 MAUI 中配置“appSettings.json”,就像在 ASP.NET Core Web 应用程序/API 中一样。如何在类的构造函数中使用注入的 IConfiguration?

问题描述 投票:0回答:1

我需要这样一个配置,其中我们使用

appSettings.json
文件,这样我们就可以将应用程序配置值放入该文件中。之后,在应用程序的其他部分使用该配置。

我们可以在 ASP.NET Core MVC Web 应用程序或 Web API 中看到这样的示例。

我期待一个包装成方法/函数的代码,所以我可以在与.Net MAUI相关的

MauiProgram.cs
中使用该方法。

您可以看到下面的示例代码。

public static MauiApp CreateMauiApp()
{
    var builder = MauiApp.CreateBuilder();

    builder
         .UseMauiApp<App>()
         // like as -> .ConfigureAppConfiguration(typeof(MauiProgram), "appsettings.json")
         .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });

    builder.Logging.AddDebug();

    return builder.Build();
}
.net-core asp.net-core-mvc asp.net-core-webapi maui maui-community-toolkit
1个回答
0
投票

您可以使用

ConfigurationManager
在 .NET MAUI 应用程序中配置设置。

首先,将 appsettings.json 文件添加到项目中作为

EmbeddedResource

然后,安装下面列出的两个 nuget 软件包:

[Microsoft.Extensions.Configuration.Binder](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Binder/)
[Microsoft.Extensions.Configuration.Json](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json)

将以下内容添加到您的 MauiProgram.cs

 builder.Services.AddTransient<MainPage>();
 var a = Assembly.GetExecutingAssembly();
 var appSettings = $"{a.GetName().Name}.Resources.appsettings.json";
 using var stream = a.GetManifestResourceStream(appSettings);
 var config = new ConfigurationBuilder()
 .AddJsonStream(stream)
 .Build();
 builder.Configuration.AddConfiguration(config); 

最后但并非最不重要的一点是,在您的 MainPage.cs 上,您可以注入

IConfiguration
,如下所示:

IConfiguration configuration; 
public MainPage(IConfiguration config)
{
      InitializeComponent();
      configuration = config; 
}

private async void OnCounterClicked(object sender, EventArgs e)
{
   var settings = configuration.GetRequiredSection("Settings").Get<Settings>();
}
© www.soinside.com 2019 - 2024. All rights reserved.