Caricamento dei dati dal file JSON per una volta

1

Ho un file JSON che ha alcuni hundered di righe memorizzate come sotto ..

[
  {
    "Id": "1",
    "Name": "A"
  },
  {
    "Id": "1",
    "Name": "A"
  }
]

Sto cercando di caricarlo in una raccolta di una classe. Questi dati sono statici e non cambieranno, quindi ho bisogno di caricarlo solo una volta.

Ho creato una classe e caricandola nel costruttore privato e caricando nella raccolta che ho nella classe.

    public sealed class JsonLoader : IJsonloader
    {
        private readonly IEnumerable<Product> products = new List<Product>();

        private JsonLoader()
        {
            using (var r = new StreamReader("data.json"))
            {
                var json = r.ReadToEnd();
                products = //deserialse the json here 
            }
        }

        public static IEnumerable<Product> Products => this.products;
    }

Implementare singleton usando l'opzione singleton della mappa della struttura. Voglio sapere se il mio modo di implementare è corretto o se può migliorare ulteriormente?

o Qualunque altro modo migliore per farlo? qualsiasi aiuto molto apprezzato:)

    
posta Bhaskar K 26.07.2016 - 10:45
fonte

1 risposta

-1

Rendi statico il tuo caricatore e metti la funzione di carico nel costruttore statico. Quindi, quando viene chiamato il costruttore statico, l'elenco verrà caricato e in sostanza memorizzato nella cache nell'elenco statico fino a quando l'applicazione non viene scaricata. Ciò garantirà che i dati vengano caricati una volta poiché i costruttori statici sono sicuri per i thread.

Per i test proposti potresti inserire un'interfaccia che avvolge il caricatore statico per deridere l'elenco di prodotti, se necessario.

    
risposta data 26.07.2016 - 15:43
fonte

Leggi altre domande sui tag