Je suis à la migration d'un ASP.NET 5 RC1 projet de ASP.NET de Base, et ont rencontré un problème intéressant, je n'ai pas encore vu, ou trouvé une solution pour.
Afin d'utiliser les paramètres de configuration de Démarrage, je l'ai déjà récupéré la configuration de la façon suivante
// Works fine for DI both in ASP.NET 5 RC1 and ASP.NET Core
services.Configure<SomeConfigurationClass>(Configuration.GetSection("SomeConfigurationSection"));
// How I previous retrieved the configuration for use in startup.
// No longer available in ASP.NET Core
var someConfigurationToUseLater = Configuration.Get<SomeConfigurationClass>("SomeConfigurationSection");
Après la mise à jour de ASP.NET Core 1.0, il semble Configuration.Get<T>() n'est plus disponible.
J'ai essayé de mettre à jour le code pour utiliser la Configuration.GetValue<T>() cependant, cela ne semble pas fonctionner avec des objets et ne fonctionne que lorsque l'offre d'une voie à une valeur. Cela m'a laissé avec une solution de contournement pour la plupart de mes classes de configuration comme
var someConfigurationName = "someConfiguration";
var someConfigurationClass = new SomeConfigurationClass()
{
Value1 = Configuration.GetValue<string>($"{someConfigurationName}:value1"),
Foo = Configuration.GetValue<string>($"{someConfigurationName}:foo"),
Bar = Configuration.GetValue<string>($"{someConfigurationName}:bar")
};
Cependant, c'est un problème lors de la configuration de la classe contient un tableau d'objets. Dans mon cas, un tableau d'objets Client
public class ClientConfiguration
{
public Client[] Clients { get; set; }
}
Avec la configuration suivante
"configuredClients": {
"clients": [
{
"clientName": "Client1",
"clientId": "Client1"
},
{
"clientName": "Client2",
"clientId": "Client2"
}
]
}
Si cela peut déjà se lier à la propriété Clients de ma classe de configuration, pas de problème, je n'arrive plus à trouver un moyen de le faire dans ASP.NET Core 1.0