Since you're using a separate class for this, then encapsulate the access to the `dictionary` by forwarding the `TryGetValue` and the `Add` methods to the private dictionary. This approach means that locking can't be encapsulated in this class, meaning all calling code should put a lock, and might forget it for instance

Maybe a little sidenote: The class is named `StaticResourceDictionary` which is quite generic, yet the encapsulated dictionary is type specific. Maybe rename it accordingly or use Type parameters on the static class that is used by the dictionary?