ResXResourceReader.BasePath プロパティ

定義

ResXFileRef オブジェクトで指定されている相対ファイル パスのベース パスを取得または設定します。

public:
 property System::String ^ BasePath { System::String ^ get(); void set(System::String ^ value); };
public string BasePath { get; set; }
public string? BasePath { get; set; }
member this.BasePath : string with get, set
Public Property BasePath As String

プロパティ値

ResXFileRef オブジェクトで指定されている相対ファイル パスの前に付加されると、リソース ファイルの絶対パスとなるパス。

例外

設定操作では、XML リソース ファイルが既にアクセスされていて使用中であるため、値は指定できません。

次の例では、犬種の画像を含む XML リソース ファイルを作成し、リソースを作成したアプリケーションを指定する文字列リソースも作成します。 ResXFileRef オブジェクトは、バイナリ イメージ自体をリソース ファイルに格納するのではなく、イメージへのパスを格納するために使用されます。 この例では、 プロパティを BasePath 設定して、イメージのファイル名内の相対ファイル パスが C:\data\ という名前のディレクトリのサブディレクトリとして解釈されるようにします。

using System;
using System.Collections;
using System.ComponentModel.Design;
using System.Drawing;
using System.Reflection;
using System.Resources;

public class Example
{
   public static void Main()
   {
      CreateXMLResourceFile();
      
      // Read the resources in the XML resource file.
      ResXResourceReader resx = new ResXResourceReader("DogBreeds.resx"); 
      Console.WriteLine("Default Base Path: '{0}'", resx.BasePath);
      resx.BasePath = @"C:\Data\";
      Console.WriteLine("Current Base Path: '{0}'\n", resx.BasePath); 
      resx.UseResXDataNodes = true;

      IDictionaryEnumerator dict = resx.GetEnumerator();
      AssemblyName[] assemblyNames = { new AssemblyName(typeof(Bitmap).Assembly.FullName) };
      while (dict.MoveNext()) {
         ResXDataNode node = (ResXDataNode) dict.Value;
         if (node.FileRef != null) {
            object image = node.GetValue(assemblyNames);
            Console.WriteLine("{0}: {1} from {2}", dict.Key, 
                              image.GetType().Name, node.FileRef.FileName);
         }
         else {
            Console.WriteLine("{0}: {1}", node.Name, node.GetValue((ITypeResolutionService) null));
         }   
      }   
   }

   private static void CreateXMLResourceFile()
   {
      // Define an array of ResXFileRef objects for images.
      String typeName = String.Format("{0}, {1}", typeof(Bitmap).FullName, 
                                      typeof(Bitmap).Assembly.FullName);
      ResXFileRef[] imageRefs =
         { new ResXFileRef(@"images\Akita.jpg", typeName),
           new ResXFileRef(@"images\Dalmatian.jpg", typeName),
           new ResXFileRef(@"images\Husky.jpg", typeName),
           new ResXFileRef(@"images\GreatPyrenees.jpg", typeName),
           new ResXFileRef(@"images\Malamute.jpg", typeName),
           new ResXFileRef(@"images\newfoundland.jpg", typeName),
           new ResXFileRef(@"images\Rottweiler.jpg", typeName) 
         };
      
      using (ResXResourceWriter resx = new ResXResourceWriter(@".\DogBreeds.resx")) {
         // Add each ResXFileRef object to the resource file.
         foreach (var imageRef in imageRefs) {
            // Form resource name from name of image.
            String name = imageRef.FileName;
            name = name.Substring(name.IndexOf(@"\") + 1);
            name = name.Substring(0, name.IndexOf("."));
            ResXDataNode node = new ResXDataNode(name, imageRef); 
            resx.AddResource(node);
         }
         resx.AddResource("CreatedBy", typeof(Example).Assembly.FullName);
      }   
   }
}
// The example displays the following output:
//    Default Base Path: ''
//    Current Base Path: 'C:\Data\'
//    
//    Akita: Bitmap from C:\Data\images\Akita.jpg
//    Dalmatian: Bitmap from C:\Data\images\Dalmatian.jpg
//    Husky: Bitmap from C:\Data\images\Husky.jpg
//    GreatPyrenees: Bitmap from C:\Data\images\GreatPyrenees.jpg
//    Malamute: Bitmap from C:\Data\images\Malamute.jpg
//    newfoundland: Bitmap from C:\Data\images\newfoundland.jpg
//    Rottweiler: Bitmap from C:\Data\images\Rottweiler.jpg
//    CreatedBy: BasePathEx1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Imports System.Collections
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Reflection
Imports System.Resources

Module Example
   Public Sub Main()
      CreateXMLResourceFile()
      
      ' Read the resources in the XML resource file.
      Dim resx As New ResXResourceReader("DogBreeds.resx") 
      Console.WriteLine("Default Base Path: '{0}'", resx.BasePath)
      resx.BasePath = "C:\Data\"
      Console.WriteLine("Current Base Path: '{0}'", resx.BasePath) 
      Console.WriteLine()     
      resx.UseResXDataNodes = True

      Dim dict As IDictionaryEnumerator = resx.GetEnumerator()
      Dim assemblyNames() As AssemblyName = 
                       { New AssemblyName(GetType(Bitmap).Assembly.FullName) }
      Do While dict.MoveNext()
         Dim node As ResXDataNode = CType(dict.Value, ResXDataNode)
         If node.FileRef IsNot Nothing Then
            Dim image As Object = node.GetValue(assemblyNames)
            Console.WriteLine("{0}: {1} from {2}", dict.Key, image.GetType().Name, node.FileRef.Filename)
         Else
            Console.WriteLine("{0}: {1}", node.Name, node.GetValue(CType(Nothing, ITypeResolutionService)))
         End If   
      Loop   
   End Sub
   
   Private Sub CreateXMLResourceFile()
      ' Define an array of ResXFileRef objects for images.
      Dim typeName As String = String.Format("{0}, {1}", GetType(Bitmap).Fullname, GetType(Bitmap).Assembly.FullName)
      Dim imageRefs() As ResXFileRef =
         { New ResXFileRef("images\Akita.jpg", typeName),
           New ResXFileRef("images\Dalmatian.jpg", typeName),
           New ResXFileRef("images\Husky.jpg", typeName),
           New ResXFileRef("images\GreatPyrenees.jpg", typeName),
           New ResXFileRef("images\Malamute.jpg", typeName),
           New ResXFileRef("images\Newfoundland.jpg", typeName),
           New ResXFileRef("images\Rottweiler.jpg", typeName) 
         }
      
      Using resx As New ResXResourceWriter(".\DogBreeds.resx")
         ' Add each ResXFileRef object to the resource file.
         For Each imageRef In imageRefs
            ' Form resource name from name of image.
            Dim name As String = imageRef.FileName
            name = name.Substring(name.IndexOf("\") + 1)
            name = name.Substring(0, name.IndexOf("."))
            Dim node As New ResXDataNode(name, imageRef) 
            resx.AddResource(node)
         Next
         resx.AddResource("CreatedBy", GetType(Example).Assembly.FullName)
      End Using   
   End Sub
End Module
' The example displays the following output:
'       Default Base Path: ''
'       Current Base Path: 'C:\Data\'
'       
'       Akita: Bitmap from C:\Data\images\Akita.jpg
'       Dalmatian: Bitmap from C:\Data\images\Dalmatian.jpg
'       Husky: Bitmap from C:\Data\images\Husky.jpg
'       GreatPyrenees: Bitmap from C:\Data\images\GreatPyrenees.jpg
'       Malamute: Bitmap from C:\Data\images\Malamute.jpg
'       Newfoundland: Bitmap from C:\Data\images\Newfoundland.jpg
'       Rottweiler: Bitmap from C:\Data\images\Rottweiler.jpg
'       CreatedBy: BasePathEx1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

プロジェクトを正常にコンパイルするには、System.Drawing.dllへの参照を追加する必要があることに注意してください。 この例では、必要なイメージが C:\data\images\ という名前のディレクトリに存在することも必要です。

注釈

プロパティは、オブジェクトの BasePath プロパティResXFileRefに割り当てられている相対ファイル パス参照をFileName解決するために使用されます。 既定では、その値は で String.Empty、相対ファイル パス参照は、 プロパティによって返される現在のディレクトリとの関係で Environment.CurrentDirectory 解決されます。 リソースの列挙を開始する前に、このプロパティを設定する必要があります。

適用対象

こちらもご覧ください