Partager via


ResXResourceReader.BasePath Propriété

Définition

Obtient ou définit le chemin d'accès de base fichier spécifié dans un objet 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

Valeur de propriété

Chemin d’accès qui, s’il est ajouté au chemin de fichier relatif spécifié dans un objet ResXFileRef, génère un chemin d’accès absolu à un fichier de ressources.

Exceptions

Dans une opération ensembliste, aucune valeur ne peut être spécifiée, car le fichier de ressources XML a déjà fait l'objet d'un accès et est en cours d'utilisation.

Exemples

L’exemple suivant crée un fichier de ressources XML qui contient des images de races de chiens et crée également une ressource de chaîne qui spécifie l’application qui a créé la ressource. ResXFileRef Les objets sont utilisés pour stocker le chemin d’accès aux images au lieu de stocker les images binaires elles-mêmes dans le fichier de ressources. L’exemple définit la BasePath propriété de sorte que les chemins d’accès aux fichiers relatifs dans les noms de fichiers des images soient interprétés comme des sous-répertoires d’un répertoire nommé 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

Notez que vous devez ajouter une référence à System.Drawing.dll pour compiler correctement le projet. L’exemple exige également que les images nécessaires existent dans un répertoire nommé C:\data\images\.

Remarques

La BasePath propriété est utilisée pour résoudre les références de chemin d’accès de fichier relatives qui sont affectées à la FileName propriété des ResXFileRef objets. Par défaut, sa valeur est String.Empty, et les références de chemin d’accès de fichier relatifs sont résolues en relation avec le répertoire actif retourné par la Environment.CurrentDirectory propriété . Vous devez définir cette propriété avant de commencer l’énumération des ressources.

S’applique à

Voir aussi