Hirdetés

Új hozzászólás Aktív témák

  • joysefke

    veterán

    Ehh, működik a reloadOnChange, és a dolog nyitja tényleg az volt, ami stackoverflow linken van.

    Így már működik ez az egész felülírom a konfig-fájlt (egyetlen kis konfig fájlt, ami nem kritikus) és az abban tárolt konfiguráció újratöltődik dolog. nyilván nem adatbázisként érdemes használni.

    Leírom hátha jó lesz valakinek. Én azóta már máshogy csináltam, de a példakód működik :)

    config.json :
    {
    "config": {
    "Name": "Bismarck",
    "Registry": "NCC-1701",
    "Class": "Constitution",
    "Length": 500.0,
    "Commissioned": true
    }
    }

    tartozik hozzá egy POCO modell class amibe beolvastatom a config.json-t.
    public class Config
    {
    public string Name { get; set; }
    public string Registry { get; set; }
    public string Class { get; set; }
    public decimal Length { get; set; }
    public bool Commissioned { get; set; }
    }

    Program.cs
    WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
    config.SetBasePath(Directory.GetCurrentDirectory());
    config.AddJsonFile("config.json", optional: true, reloadOnChange: true);
    })

    Ez a kritikus részlet:
    Startup.cs
    services.Configure<Config>(Configuration.GetSection("config"));

    Innentől kezdve működik nálam a reloadOnChange akár felülírom, akár csak egy value-t írok át benne kézzel.

    Ha felül akarom írni, csinálok egy anonim típust amelynek az egyetlen property-je a megváltozott Config objektum. Ezzel a trükkel beírja az osztály nevét is a config.json-ba. (amire szükség van, mert key-ként használjuk)

    var root = new
    {
    config = changedConfigObject
    };

    string newConfig = Newtonsoft.Json.JsonConvert.SerializeObject(root);
    System.IO.File.WriteAllText("config.json", newConfig);

Új hozzászólás Aktív témák