ResXResourceReader.BasePath Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den Basispfad für den in einem ResXFileRef-Objekt angegebenen relativen Pfad ab oder legt diesen fest.
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
Eigenschaftswert
Ein Pfad, mit dem der absolute Pfad zu einer Ressourcendatei erstellt werden kann, wenn er dem in einem ResXFileRef-Objekt angegebenen relativen Dateipfad vorangestellt wird.
Ausnahmen
Bei einem Set-Vorgang kann kein Wert angegeben werden, da bereits auf die XML-Ressourcendatei zugegriffen wurde und sie bereits verwendet wird.
Beispiele
Im folgenden Beispiel wird eine XML-Ressourcendatei erstellt, die Bilder von Hunderassen enthält, sowie eine Zeichenfolgenressource, die die Anwendung angibt, die die Ressource erstellt hat. ResXFileRef -Objekte werden verwendet, um den Pfad zu den Bildern zu speichern, anstatt die binären Bilder selbst in der Ressourcendatei zu speichern. Im Beispiel wird die BasePath -Eigenschaft so festgelegt, dass die relativen Dateipfade in den Dateinamen der Bilder als Unterverzeichnisse eines Verzeichnisses mit dem Namen C:\data\ interpretiert werden.
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
Beachten Sie, dass Sie einen Verweis auf System.Drawing.dll hinzufügen müssen, um das Projekt erfolgreich zu kompilieren. Das Beispiel erfordert auch, dass die erforderlichen Images in einem Verzeichnis mit dem Namen C:\data\images\ vorhanden sind.
Hinweise
Die BasePath -Eigenschaft wird verwendet, um relative Dateipfadverweise aufzulösen, die der FileName -Eigenschaft von ResXFileRef -Objekten zugewiesen sind. Standardmäßig ist String.Emptyder Wert , und relative Dateipfadverweise werden in Beziehung zum aktuellen Verzeichnis aufgelöst, das von der Environment.CurrentDirectory -Eigenschaft zurückgegeben wird. Sie sollten diese Eigenschaft festlegen, bevor Sie mit dem Aufzählen von Ressourcen beginnen.