Lazy Init if the Items property is null
From what I can see you are calling an init function on every service so you can get data and cache it at startup.

A better way to do this would be to use the dependency injection layer for example using unity

    builder.RegisterType&lt;CurrenciesService&gt;()
        .As&lt;ICurrenciesService&gt;()
        .AutoActivate()
        .OnActivating(x =&gt; x.Instance.Init())
        .SingleInstance();


So this code activates your Currency Service, auto activates it when the container is building, when it gets activated calls init and puts it in single instance. Single instance is needed otherwise the init will be called on every request.