Ayar Dosyasındaki Section’ı Özel Bir Sınıfın Örneğine Bağlamak

1. Yöntem (Dictionary > JSON > Object):

Cem Topkaya
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>();

3. Yöntem (Configuration.Bind())

--

--

Cem Topkaya
Cem Topkaya

Written by Cem Topkaya

Evlat, kardeş, ağabey, eş, baba, müzik sever, öğrenmek ister, paylaşmaya can atar, iyi biri olmaya çalışır, hakkı geçenlerden helallik ister vs.

No responses yet