Question: I use a resw-file to store literal strings in my app and I access them with 

```
(new Windows.ApplicationModel.Resources.ResourceLoader()).GetString("resourceName");

```

I find this a bit cumbersome and would like to have a global resource loader, e.g. in a static class: 

```
public static class ResourceLoader
{
    private static Windows.ApplicationModel.Resources.ResourceLoader loader = new Windows.ApplicationModel.Resources.ResourceLoader();

    public static string Get(string name)
    {
        return loader.GetString(name);
    }
}

```

That way I only have one instance of the ResourceLoader and it's easy to access. Is there anything that speaks against doing it like this? It seems to work in my app, but I don't want to miss anything here.

Answer: 
There's no documented drawback on using a global ResourceLoader.
Although you should get an instance using the static method GetForViewIndependentUse() instead of the constructor;
this method give you an instance of ResourceLoader that doesn't depend on any specific context so you can retrieve resources from your app from anywhere in your code.
I dunno if it helps, but this is a class I use for loading strings from a ResW in code:

```
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.Resources;

namespace ProjectName.Services
{
    public sealed class ResourceService : ObservableObject
    {
        private ResourceService() {}

        public static Task<ResourceService> CreateServiceAsync ()
        {
            return Task.FromResult(new ResourceService());
        }

        public Task<string> GetResourceStringAsync (string stringname)
        {
            try
            {
                var resourceloader = ResourceLoader.GetForCurrentView();
                return Task.FromResult(resourceloader.GetString(stringname));
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        public Task<string> GetResourceStringAsync (string resource, string stringname)
        {
            try
            {
                var resourceloader = ResourceLoader.GetForCurrentView(resource);
                return Task.FromResult(resourceloader.GetString(stringname));
            }
            catch (Exception ex)
            {
                return null;
            }
        }
    }
}

```

I initialize it in App.xaml.cs in the OnLaunched event with:

```
this.ResourceService = await ResourceService.CreateServiceAsync()

```

Then consume it with:

```
var stringtoget = await App.ResourceService.GetResourceStringAsync("resourcename", "stringkeyname");

```