private IDynamicNodeProvider[] ResolveDynamicNodeProviders()
 {
     var instantiator = new PluginInstantiator<IDynamicNodeProvider>();
     var xmlSource = new FileXmlSource(this.absoluteFileName);
     var typeNames = xmlAggergator.GetAttributeValues(xmlSource, "dynamicNodeProvider");
     var providers = instantiator.GetInstances(typeNames);
     return providers.ToArray();
 }
 private IList<string> GetMvcSiteMapNodeXmlDistinctAttributeValues(string attributeName)
 {
     IList<string> result = new List<string>();
     if (this.settings.EnableSiteMapFile)
     {
         var xmlSource = new FileXmlSource(this.absoluteFileName);
         result = xmlAggergator.GetAttributeValues(xmlSource, attributeName);
     }
     return result;
 }
        private ISiteMapNodeUrlResolver[] ResolveSiteMapNodeUrlResolvers()
        {
            var instantiator = new PluginInstantiator<ISiteMapNodeUrlResolver>();
            var xmlSource = new FileXmlSource(this.absoluteFileName);
            var typeNames = xmlAggergator.GetAttributeValues(xmlSource, "urlResolver");

            // Add the default provider if it is missing
            var defaultName = typeof(SiteMapNodeUrlResolver).ShortAssemblyQualifiedName();
            if (!typeNames.Contains(defaultName))
            {
                typeNames.Add(defaultName);
            }

            var providers = instantiator.GetInstances(typeNames, new object[] { this.mvcContextFactory });
            return providers.ToArray();
        }
        private ISiteMapNodeVisibilityProvider[] ResolveSiteMapNodeVisibilityProviders(string defaultVisibilityProviderName)
        {
            var instantiator = new PluginInstantiator<ISiteMapNodeVisibilityProvider>();
            var xmlSource = new FileXmlSource(this.absoluteFileName);
            var typeNames = xmlAggergator.GetAttributeValues(xmlSource, "visibilityProvider");

            // Fixes #196, default instance not created.
            if (!String.IsNullOrEmpty(defaultVisibilityProviderName) && !typeNames.Contains(defaultVisibilityProviderName))
            {
                typeNames.Add(defaultVisibilityProviderName);
            }
            var providers = instantiator.GetInstances(typeNames);
            return providers.ToArray();
        }
        private IDynamicNodeProvider[] ResolveDynamicNodeProviders()
        {
            var instantiator = new PluginInstantiator<IDynamicNodeProvider>();
            var xmlSource = new FileXmlSource(this.absoluteFileName);
            var typeNames = xmlAggergator.GetAttributeValues(xmlSource, "dynamicNodeProvider");

            var attributeTypeNames = this.GetMvcSiteMapNodeAttributeDynamicNodeProviderNames();
            foreach (var typeName in attributeTypeNames)
            {
                if (!typeNames.Contains(typeName))
                {
                    typeNames.Add(typeName);
                }
            }

            var providers = instantiator.GetInstances(typeNames);
            return providers.ToArray();
        }