/// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="table">Table of views to use for resolution.</param>
        public EmbeddedViewVirtualPathProvider(EmbeddedViewTable table) {
            if (table == null) {
                throw new ArgumentNullException("table", "EmbeddedViewTable cannot be null.");
            }

            embeddedViews = table;
        }
        /// <summary>
        /// Creates a list of embedded views from currently assemblies in the AppDomain.
        /// </summary>
        /// <returns></returns>
        public virtual EmbeddedViewTable GetEmbeddedViews()
        {
            Assembly[] assemblies = GetAssemblies();
            if (assemblies == null || assemblies.Length == 0)
            {
                return(null);
            }

            var table = new EmbeddedViewTable();

            foreach (var assembly in assemblies)
            {
                var names = GetNamesOfAssemblyResources(assembly);
                if (names == null || names.Length == 0)
                {
                    continue;
                }

                foreach (var name in names)
                {
                    var key = name.ToLowerInvariant();
                    if (!EmbeddedNamespaces.Any(key.Contains))
                    {
                        continue;
                    }

                    table.AddView(name, assembly.FullName);
                }
            }

            return(table);
        }
        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="table">Table of views to use for resolution.</param>
        public EmbeddedViewVirtualPathProvider(EmbeddedViewTable table)
        {
            if (table == null)
            {
                throw new ArgumentNullException("table", "EmbeddedViewTable cannot be null.");
            }

            embeddedViews = table;
        }
        /// <summary>
        /// Creates a list of embedded views from currently assemblies in the AppDomain.
        /// </summary>
        /// <returns></returns>
        public virtual EmbeddedViewTable GetEmbeddedViews() {
            Assembly[] assemblies = GetAssemblies();
            if (assemblies == null || assemblies.Length == 0) return null;

            var table = new EmbeddedViewTable();

            foreach (var assembly in assemblies) {
                var names = GetNamesOfAssemblyResources(assembly);
                if (names == null || names.Length == 0) continue;

                foreach (var name in names) {
                    var key = name.ToLowerInvariant();
                    if (!EmbeddedNamespaces.Any(key.Contains)) continue;

                    table.AddView(name, assembly.FullName);
                }
            }

            return table;
        }