ModuleBuilder.DefineResource Methode
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.
Definiert eine verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll.
Überlädt
| Name | Beschreibung |
|---|---|
| DefineResource(String, String) |
Definiert die benannte verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll. |
| DefineResource(String, String, ResourceAttributes) |
Definiert die benannte verwaltete eingebettete Ressource mit den angegebenen Attributen, die in diesem Modul gespeichert werden sollen. |
DefineResource(String, String)
Definiert die benannte verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll.
public:
System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description);
public System.Resources.IResourceWriter DefineResource(string name, string description);
member this.DefineResource : string * string -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String) As IResourceWriter
Parameter
- name
- String
Der Name der Ressource.
name Eingebettete Nullwerte können nicht enthalten.
- description
- String
Die Beschreibung der Ressource.
Gibt zurück
Ein Ressourcenschreiber für die definierte Ressource.
Ausnahmen
Die Länge von name 0 ist null.
name ist NULL.
Dieses Modul ist vorübergehend.
-oder-
Die enthaltende Assembly kann nicht beibehalten werden.
Beispiele
Im folgenden Beispiel wird die Verwendung der DefineResource Verwendung einer externen Ressource zum aktuellen ModuleBuilderBeispiel veranschaulicht.
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;
public class CodeGenerator
{
public CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain currentDomain = AppDomain.CurrentDomain;
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Define 'TempAssembly' assembly in the current application domain.
AssemblyBuilder myAssemblyBuilder =
currentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Define 'TempModule' module in 'TempAssembly' assembly.
ModuleBuilder myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("TempModule",
"TempModule.netmodule",true);
// Define the managed embedded resource, 'MyResource' in 'TempModule'.
IResourceWriter myResourceWriter =
myModuleBuilder.DefineResource("MyResource.resource","Description");
// Add resources to the resource writer.
myResourceWriter.AddResource("String 1", "First String");
myResourceWriter.AddResource("String 2", "Second String");
myResourceWriter.AddResource("String 3", "Third String");
myAssemblyBuilder.Save("MyAssembly.dll");
}
}
public class CallerClass
{
public static void Main()
{
CodeGenerator myGenerator = new CodeGenerator();
Console.WriteLine("A resource named 'MyResource.resource'"
+" has been created and can be viewed in the 'MyAssembly.dll'");
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources
Public Class CodeGenerator
Public Sub New()
' Get the current application domain for the current thread.
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Define 'TempAssembly' assembly in the current application domain.
Dim myAssemblyBuilder As AssemblyBuilder = currentDomain.DefineDynamicAssembly _
(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Define 'TempModule' module in 'TempAssembly' assembly.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule _
("TempModule", "TempModule.netmodule", True)
' Define the managed embedded resource, 'MyResource' in 'TempModule'.
Dim myResourceWriter As IResourceWriter = myModuleBuilder.DefineResource _
("MyResource.resource", "Description")
' Add resources to the resource writer.
myResourceWriter.AddResource("String 1", "First String")
myResourceWriter.AddResource("String 2", "Second String")
myResourceWriter.AddResource("String 3", "Third String")
myAssemblyBuilder.Save("MyAssembly.dll")
End Sub
End Class
Public Class CallerClass
Public Shared Sub Main()
Dim myGenerator As New CodeGenerator()
Console.WriteLine("A resource named 'MyResource.resource' has been created and can be" + _
" viewed in the 'MyAssembly.dll'")
End Sub
End Class
Hinweise
Der Aufrufer darf die ResourceWriter.Generate() Methoden ResourceWriter.Close() nicht aufrufen, da diese Methoden aufgerufen ModuleBuilder.Save werden, wenn die dynamische Assembly auf den Datenträger geschrieben wird.
Verwenden Sie diese Methode, um eine verwaltete Ressource einzubetten. Verwenden Sie die DefineManifestResource Methode, um ein Manifestressourcen-BLOB einzubetten. Eine Zusammenfassung der Einbettung und Verknüpfung von verwalteten Ressourcen und Manifestressourcenblobs finden Sie in der DefineManifestResource Methode.
Weitere Informationen
Gilt für:
DefineResource(String, String, ResourceAttributes)
Definiert die benannte verwaltete eingebettete Ressource mit den angegebenen Attributen, die in diesem Modul gespeichert werden sollen.
public:
System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::Reflection::ResourceAttributes attribute);
public System.Resources.IResourceWriter DefineResource(string name, string description, System.Reflection.ResourceAttributes attribute);
member this.DefineResource : string * string * System.Reflection.ResourceAttributes -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, attribute As ResourceAttributes) As IResourceWriter
Parameter
- name
- String
Der Name der Ressource.
name Eingebettete Nullwerte können nicht enthalten.
- description
- String
Die Beschreibung der Ressource.
- attribute
- ResourceAttributes
Die Ressourcenattribute.
Gibt zurück
Ein Ressourcenschreiber für die definierte Ressource.
Ausnahmen
Die Länge von name 0 ist null.
name ist NULL.
Dieses Modul ist vorübergehend.
-oder-
Die enthaltende Assembly kann nicht beibehalten werden.
Beispiele
Im folgenden Beispiel wird die Verwendung von DefineResource veranschaulicht, um der aktuellen ModuleBuilderRessource eine externe Ressource hinzuzufügen.
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;
public class CodeGenerator
{
public CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain currentDomain = AppDomain.CurrentDomain;
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Define 'TempAssembly' assembly in the current application domain.
AssemblyBuilder myAssemblyBuilder =
currentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Define 'TempModule' module in 'TempAssembly' assembly.
ModuleBuilder myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("TempModule",
"TempModule.netmodule",true);
// Define the managed embedded resource, 'MyResource' in 'TempModule'
// with the specified attribute.
IResourceWriter writer =
myModuleBuilder.DefineResource("MyResource.resource",
"Description",ResourceAttributes.Public);
// Add resources to the resource writer.
writer.AddResource("String 1", "First String");
writer.AddResource("String 2", "Second String");
writer.AddResource("String 3", "Third String");
myAssemblyBuilder.Save("MyAssembly.dll");
}
}
public class CallerClass
{
public static void Main()
{
CodeGenerator myGenerator = new CodeGenerator();
Console.WriteLine("A resource named 'MyResource.resource'"
+" has been created and can be viewed in the 'MyAssembly.dll'");
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources
Public Class CodeGenerator
Public Sub New()
' Get the current application domain for the current thread.
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Define 'TempAssembly' assembly in the current application domain.
Dim myAssemblyBuilder As AssemblyBuilder = currentDomain.DefineDynamicAssembly _
(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Define 'TempModule' module in 'TempAssembly' assembly.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule _
("TempModule", "TempModule.netmodule", True)
' Define the managed embedded resource, 'MyResource' in 'TempModule'
' with the specified attribute.
Dim writer As IResourceWriter = myModuleBuilder.DefineResource _
("MyResource.resource", "Description", ResourceAttributes.Public)
' Add resources to the resource writer.
writer.AddResource("String 1", "First String")
writer.AddResource("String 2", "Second String")
writer.AddResource("String 3", "Third String")
myAssemblyBuilder.Save("MyAssembly.dll")
End Sub
End Class
Public Class CallerClass
Public Shared Sub Main()
Dim myGenerator As New CodeGenerator()
Console.WriteLine("A resource named 'MyResource.resource' has been created and can be " + _
"viewed in the 'MyAssembly.dll'")
End Sub
End Class
Hinweise
Der Aufrufer darf die ResourceWriter.Generate() Methoden ResourceWriter.Close() nicht aufrufen, da diese Methoden aufgerufen ModuleBuilder.Save werden, wenn die dynamische Assembly auf den Datenträger geschrieben wird.
Verwenden Sie diese Methode, um eine verwaltete Ressource einzubetten. Verwenden Sie die DefineManifestResource Methode, um ein Manifestressourcen-BLOB einzubetten. Eine Zusammenfassung der Einbettung und Verknüpfung von verwalteten Ressourcen und Manifestressourcenblobs finden Sie in der DefineManifestResource Methode.