Comment charger appsetting.json section dans le Dictionnaire .NET de Base?
Je suis familier w/chargement d'un appsettings.json section dans un objet fortement typé .NET de Base démarrage.cs. Par exemple:
public class CustomSection
{
public int A {get;set;}
public int B {get;set;}
}
//In Startup.cs
services.Configure<CustomSection>(Configuration.GetSection("CustomSection"));
//Inject an IOptions instance
public HomeController(IOptions<CustomSection> options)
{
var settings = options.Value;
}
J'ai un appsettings.json section qui de paires clé/valeur varie en nombre et nom au fil du temps. Par conséquent, il n'est pas pratique pour coder en dur les noms de propriété dans une classe, puisque de nouvelles paires clé/valeur nécessiterait une modification du code dans la classe. Un petit échantillon de quelques paires clé/valeur:
"MobileConfigInfo": {
"appointment-confirmed": "We've booked your appointment. See you soon!",
"appointments-book": "New Appointment",
"appointments-null": "We could not locate any upcoming appointments for you.",
"availability-null": "Sorry, there are no available times on this date. Please try another."
}
Est-il un moyen de charger ces données dans un MobileConfigInfo Dictionnaire de l'objet, puis utilisez l'IOptions modèle à injecter MobileConfigInfo dans un contrôleur?
Hmmm n'est pas vraiment au sujet de cette question ASP.NET de Base et pas .NET de Base? Peu un titre trompeur.
OriginalL'auteur ChrisP | 2017-03-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Configuration.Bind(settings);
dansstartup.cs
classeEt vos paramètres de classe sera comme
Espère que cela aide!
settings
?est une instance de
AppSettings
classe. LeBind
méthode de mapper les valeurs de votreconfig.json
à votresettings
instance. Après cela, vous pouvez utiliser.AddSingleton
ou quelque chose comme ça pour l'injecter dans d'autres classesOriginalL'auteur Hung Cao
Aller avec ce format de structure:
Faire de votre réglage de classe ressembler à ceci:
ensuite ce faire
OriginalL'auteur code5
Pour d'autres qui veulent convertir un Dictionnaire,
exemple de section à l'intérieur de appsettings.json
Code suivant doit être placé dans le fichier de Démarrage > ConfigureServices méthode:
Vous pouvez maintenant accéder au dictionnaire à partir de n'importe où, comme:
Un inconvénient est que toutes les valeurs seront récupérés comme des chaînes de caractères, si vous essayez de tout autre type de la valeur sera nulle.
.Select(item => new KeyValuePair<string, string>(item.Key, item.Value))
partie. Vous pouvez les appelerGetChildren().ToDictionary(x => x.Key, x => x.Value)
.OriginalL'auteur Amro
Je crois que vous pouvez utiliser le code suivant:
OriginalL'auteur macpak
Simple (peut-être microservice) d'applications que vous pouvez ajouter simplement comme un singleton
Dictionary<string, string>
et puis à l'injecter partout où vous en avez besoin:Et l'utilisation:
OriginalL'auteur ste-fu
Comme un exemple plus complexe de liaison dans ASP.Net de Base 2.1; j'ai trouvé à l'aide de la
ConfigurationBuilder
.Get<T>()
méthode beaucoup plus facile de travailler avec, comme par la documention.Que j'ai lié la configuration dans mon
Startup
méthode.Cette lie la
appsettings
fichier:Dans cette configuration de la structure:
OriginalL'auteur derpasaurus
- Je utiliser de la manière ci-dessous:
appsettings.json:
de démarrage.cs:
Utilisation:
OriginalL'auteur ErikXu
De loin la méthode la plus simple consisterait à définir votre configuration de classe hérite de la type de Dictionnaire que vous voulez soutenir.
Alors votre de démarrage de l'injection de dépendance et de soutien serait exactement la même que pour tout autre type de configuration.
OriginalL'auteur Jeremy Lakeman