在我的UWP应用程序中,我能够使用Microsoft.Extensions.Configuration包从JSON格式的appSettings文件中读取数据。
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{App.UWPENVIRONMENT}.json", true, true)
.Build();
string clientId = configuration["security:clientId"];
string authority = configuration["security:authority"];我现在似乎不能做的是使用System.Composition依赖项注入将配置提供给我的UWP应用程序的其余部分。由于配置对象的构建方式(使用Build方法),我无法理解如何将此配置嵌入到某种构造函数中。
想到的一个选择是,我可以将接口与对象关联起来,如下所示:
conventions.ForObject(configuration)
.Shared()
.Export(ecb => ecb.AsContractType<IConfiguration>());但是DI包似乎不支持这种想法。我该如何解决这个问题:
发布于 2019-04-02 15:34:08
下面是创建类型化ConfigurationRoot的代码:
/// <summary>
/// The configuration for this application.
/// </summary>
public class ApplicationConfiguration : ConfigurationRoot
{
/// <summary>
/// The client id of the service application to which we want to connect.
/// </summary>
#if PRODUCTION
private const string UWPENVIRONMENT = "Production";
#elif STAGING
private const string UWPENVIRONMENT = "Staging";
#else
private const string UWPENVIRONMENT = "Development";
#endif
/// <summary>
/// Initializes a new instance of the <see cref="ApplicationConfiguration"/> class.
/// </summary>
public ApplicationConfiguration()
: base(ApplicationConfiguration.GetProviders())
{
}
/// <summary>
/// Gets the configuration providers.
/// </summary>
/// <returns>A list of the configuration providers.</returns>
private static List<IConfigurationProvider> GetProviders()
{
// Build a configuration that reads from the appsettings.json files and extract the providers.
IConfigurationRoot configurationRoot = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{ApplicationConfiguration.UWPENVIRONMENT}.json", true, true)
.Build();
return configurationRoot.Providers.ToList();
}
}并将其添加到DI中:
conventions.ForType<ApplicationConfiguration>().Shared().Export(ecb => ecb.AsContractType<IConfiguration>());您的客户端现在将使用与.NET核心web服务大致相同的配置文件。
https://stackoverflow.com/questions/55475305
复制相似问题