ResXResourceReader.BasePath Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il percorso di base per il percorso di file relativo specificato in un oggetto 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
Valore della proprietà
Percorso che, se anteposto al percorso file relativo specificato in un oggetto ResXFileRef, produce un percorso assoluto di un file di risorse.
Eccezioni
In un'operazione di impostazione non è possibile specificare un valore poiché il file di risorse XML è stato già acceduto ed è in uso.
Esempio
L'esempio seguente crea un file di risorse XML che contiene immagini di razze cane e crea anche una risorsa stringa che specifica l'applicazione che ha creato la risorsa. ResXFileRef gli oggetti vengono usati per archiviare il percorso delle immagini anziché archiviare le immagini binarie stesse nel file di risorse. Nell'esempio viene impostata la BasePath proprietà in modo che i percorsi dei file relativi nei nomi dei file delle immagini vengano interpretati come sottodirectory di una directory denominata 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
Si noti che è necessario aggiungere un riferimento a System.Drawing.dll per compilare correttamente il progetto. L'esempio richiede inoltre che le immagini necessarie esistano in una directory denominata C:\data\images\.
Commenti
La BasePath proprietà viene usata per risolvere i riferimenti al percorso file relativi assegnati alla FileName proprietà degli ResXFileRef oggetti. Per impostazione predefinita, il relativo valore è String.Emptye i riferimenti al percorso dei file relativi vengono risolti in relazione alla directory corrente restituita dalla Environment.CurrentDirectory proprietà . È necessario impostare questa proprietà prima di iniziare a enumerare le risorse.