public ResourceXmlConfigurationProvider(ICacheProvider cacheProvider, string configurationPath, IVirtualPathResolver virtualPathResolver, IResourceCacher resourceCacher)
        {
            if (cacheProvider == null)
            {
                throw new ArgumentNullException("cacheProvider");
            }

            if (resourceCacher == null)
            {
                throw new ArgumentNullException("resourceCacher");
            }

            if (string.IsNullOrEmpty(configurationPath) && virtualPathResolver == null)
            {
                throw new ArgumentNullException("configurationPath");                    
            }

            m_CacheProvider = cacheProvider;
            m_VirtualPathResolver = virtualPathResolver;
            m_ResourceCacher = resourceCacher;

            m_XmlConfigurationPathProvider = new Lazy<string>(
                () =>
                    {
                        if (string.IsNullOrWhiteSpace(configurationPath))
                        {
                            configurationPath = m_VirtualPathResolver.Resolve("~/App_Data/WebResources.xml");
                        }

                        m_ResourceCacher.AddDependentFile(configurationPath);

                        return configurationPath;
                    },
                true);
        }