VirtualDirectory コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


VirtualPathProvider カスタム オブジェクトによって提供された DataSet オブジェクトから仮想ファイル情報を取得する VirtualDirectory コンストラクタの実装例を次のコードに示します。この例には、VirtualDirectory インスタンスの設定に使用されるGetData メソッドも含まれています。例の実行に必要なコード全体については、VirtualDirectory クラスの概要で「例」を参照してください。
Public Sub New(ByVal virtualDir As String, ByVal provider As SamplePathProvider) MyBase.New(virtualDir) spp = provider GetData() End Sub Protected Sub GetData() ' Get the data from the SamplePathProvider. Dim spp As SamplePathProvider spp = CType(HostingEnvironment.VirtualPathProvider, SamplePathProvider) Dim ds As DataSet ds = spp.GetVirtualData ' Clean up the path to match data in resource file. Dim path As String path = VirtualPath.Replace(HostingEnvironment.ApplicationVirtualPath, "") Dim trimChars() As Char = {"/"c} path = path.TrimEnd(trimChars) ' Get the virtual directory from the resource table. Dim dirs As DataTable dirs = ds.Tables("resource") Dim rows As DataRow() rows = dirs.Select( _ String.Format("(name = '{0}') AND (type='dir')", path)) ' If the select returned a row, the directory exits. If (rows.Length > 0) Then existsValue = True ' Get the children from the resource table. ' This technique works for small numbers of virtual resources. ' Sites with moderate to large numbers of virtual ' resources should choose a method that consumes fewer ' computer resources. Dim childRows As DataRow() childRows = dirs.Select( _ String.Format("parentPath = '{0}'", path)) For Each childRow As DataRow In childRows Dim childPath As String childPath = CType(childRow("path"), String) If (childRow("type").ToString = "dir") Then Dim svd As New SampleVirtualDirectory(childPath, spp) childrenValue.Add(svd) directoriesValue.Add(svd) Else Dim svf As New SampleVirtualFile(childPath, spp) childrenValue.Add(svf) directoriesValue.Add(svf) End If Next End If End Sub
public SampleVirtualDirectory(string virtualDir, SamplePathProvider provider) : base(virtualDir) { spp = provider; GetData(); } protected void GetData() { DataSet ds = spp.GetVirtualData(); // Clean up the path to match data in resource file. string path = VirtualPath.Replace(HostingEnvironment.ApplicationVirtualPath, ""); path = path.TrimEnd('/'); // Get the virtual directory from the resource table. DataTable dirs = ds.Tables["resource"]; DataRow[] rows = dirs.Select( String.Format("(name = '{0}') AND (type='dir')", path)); // If the select returned a row, the directory exists. if (rows.Length > 0) { exists = true; // Get children from the resource table. // This technique works for small numbers of virtual resources. // Sites with moderate to large numbers of virtual // resources should choose a method that consumes fewer // computer resources. DataRow[] childRows = dirs.Select( String.Format("parentPath = '{0}'", path)); foreach (DataRow childRow in childRows) { string childPath = (string)childRow["path"]; if (childRow["type"].ToString() == "dir") { SampleVirtualDirectory svd = new SampleVirtualDirectory(childPath, spp); children.Add(svd); directories.Add(svd); } else { SampleVirtualFile svf = new SampleVirtualFile(childPath, spp); children.Add(svf); files.Add(svf); } } } }

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- VirtualDirectory コンストラクタのページへのリンク