SiteMapProvider.RootProvider プロパティ

定義

現在のプロバイダー階層のルート SiteMapProvider オブジェクトを取得します。

public:
 virtual property System::Web::SiteMapProvider ^ RootProvider { System::Web::SiteMapProvider ^ get(); };
public virtual System.Web.SiteMapProvider RootProvider { get; }
member this.RootProvider : System.Web.SiteMapProvider
Public Overridable ReadOnly Property RootProvider As SiteMapProvider

プロパティ値

SiteMapProvider

現在のプロバイダーが属するプロバイダー階層の最上位サイト マップ プロバイダーである SiteMapProvider

例外

現在のサイト マップ プロバイダーへの循環参照があります。

次のコード例は、抽象SiteMapProviderクラスを実装するRootProviderクラスにプロパティを実装する方法を示しています。 これは SimpleTextSiteMapProvider 、単純なロジックを使用して、現在のプロバイダーがプロバイダー階層の一部であるかどうかを判断します。 プロバイダーが階層の一部である場合は、親プロバイダーの RootProvider プロパティを独自のプロバイダーとして使用します。 プロバイダーが階層の一部でない場合、プロバイダーは独自のルート プロバイダーです。

このコード例は、SiteMapProvider クラスのために提供されている大規模な例の一部です。

// 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;
    }
  }
}
' Implement the ParentProvider property.
Public Overrides Property ParentProvider() As SiteMapProvider
  Get
    Return parentSiteMapProvider
  End Get
  Set(ByVal value As SiteMapProvider)
    parentSiteMapProvider = Value
  End Set
End Property

' Implement the RootProvider property.
Public Overrides ReadOnly Property RootProvider() As SiteMapProvider
  Get
    ' If the current instance belongs to a provider hierarchy, it
    ' cannot be the RootProvider. Rely on the ParentProvider.
    If Not (Me.ParentProvider Is Nothing) Then
      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 Me
    End If
  End Get
End Property

注釈

クラスを SiteMapProvider 実装するすべてのクラスは、サイト マップ プロバイダー階層の概念をサポートできます。 プロバイダー間の階層関係は、プロバイダー自体によってコレクションの SiteMapProviderCollection スコープ外に保持されます。 機能プロバイダー階層の例については、以下を参照してください XmlSiteMapProvider

適用対象

こちらもご覧ください