Ayar Dosyasındaki Section’ı Özel Bir Sınıfın Örneğine Bağlamak
1. Yöntem (Dictionary > JSON > Object):
2 min readOct 6, 2019
En basit haliyle JwtSettings
adında bir section ve içinde çeşitli property ler olsun. Bu özelliklerin değerleri boolean, numbers, string, array
vs. olacaktır bu yüzden prop adını string
ama değerini object
tipinde Dictionary
örneğine yazar, sonra bunu JSON nesnesine serileştirir, sonra istediğimiz tipte örnek olacak şekilde deserileştiririz.
AppSettings.json
{
"ConnectionStrings": { ... },
"JwtSettings": {
"Secret": "cok_uzun_olursa_perf_kaybi_yasatir",
"Issuer": "Petronet",
"Audience": "TCDD",
"ExpirationTime": 30,
"UygulamaAdi": "LokoServis"
},
.....
}
Dönüştüreceğimiz sınıf:
public class TokenSettings {public string Secret { get; set; }[JsonProperty(“Issuer”)]
public string ValidIssuer { get; set; }[JsonProperty(“Audience”)]
public string ValidAudience { get; set; }public int ExpirationTime { get; set; }[JsonProperty(“UygulamaAdi”)]
public string ApplicationName { get; set; }[JsonIgnore]
public SymmetricSecurityKey IssuerSigningKey {
get => new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Secret));
}
}
Dönüşüm:
var settings = Configuration.GetSection("JwtSettings")
.Get<Dictionary<string, object>>();string json = JsonConvert.SerializeObject(settings);
/* sözlük key,value ikilileri JSON stringi haline gelir
{
"Audience":"TCDD",
"ExpirationTime":"30",
"Issuer":"Petronet",
"Secret":"cok_uzun_olursa_perf_kaybi_yasatir",
"UygulamaAdi":"LokoServis"
}
*/var ts = JsonConvert.DeserializeObject<TokenSettings>(json);
// Artık nesnemiz elimizde
2. Yöntem (Configuration.GetSection(“…”).Get<T>()):
TokenSettings
Sınıfının özelliklerinin isimlendirmesi json içindeki propertylerin isimlendirmesiyle aynı olmalıdır.
var ts = Configuration.GetSection("JwtSettings")
.Get<TokenSettings>();