SiteMapProvider.RootProvider Property

Definition

Gets the root SiteMapProvider object in the current provider hierarchy.

C#
public virtual System.Web.SiteMapProvider RootProvider { get; }

Property Value

An SiteMapProvider that is the top-level site map provider in the provider hierarchy that the current provider belongs to.

Exceptions

There is a circular reference to the current site map provider.

Examples

The following code example demonstrates how to implement the RootProvider property in a class that implements the abstract SiteMapProvider class. The SimpleTextSiteMapProvider uses simple logic to determine whether the current provider is part of a provider hierarchy. If the provider is part of a hierarchy, it uses the RootProvider property for the parent provider as its own. If the provider is not part of a hierarchy, the provider is its own root provider.

This code example is part of a larger example provided for the SiteMapProvider class.

C#
// Implement the ParentProvider property.
public override SiteMapProvider ParentProvider
{
  get
  {
    return parentSiteMapProvider;
  }
  set
  {
    parentSiteMapProvider = value;
  }
}

// Implement the RootProvider property.
public override SiteMapProvider RootProvider
{
  get
  {
    // If the current instance belongs to a provider hierarchy, it
    // cannot be the RootProvider. Rely on the ParentProvider.
    if (this.ParentProvider != null)
    {
      return ParentProvider.RootProvider;
    }
    // If the current instance does not have a ParentProvider, it is
    // not a child in a hierarchy, and can be the RootProvider.
    else
    {
      return this;
    }
  }
}

Remarks

All classes that implement the SiteMapProvider class can support the concept of a site map provider hierarchy. Any hierarchical relationships between providers are maintained outside the scope of a SiteMapProviderCollection collection by the providers themselves. For an example of a functional provider hierarchy, see XmlSiteMapProvider.

Applies to

Product Versions
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

See also