ModuleBuilder.DefineResource Método

Definição

Define um recurso inserido gerenciado a ser armazenado neste módulo.

Sobrecargas

DefineResource(String, String)

Define um recurso inserido gerenciado nomeado a ser armazenado neste módulo.

DefineResource(String, String, ResourceAttributes)

Define o recurso inserido gerenciado nomeado com os atributos informados que deve ser armazenado neste módulo.

DefineResource(String, String)

Define um recurso inserido gerenciado nomeado a ser armazenado neste módulo.

public System.Resources.IResourceWriter DefineResource (string name, string description);

Parâmetros

name
String

O nome do recurso. name não pode conter nulos inseridos.

description
String

A descrição do recurso.

Retornos

Um gravador de recurso para o recurso definido.

Exceções

O tamanho de name é zero.

name é nulo.

Esse módulo é transitório.

- ou -

O assembly recipiente não é persistente.

Exemplos

O exemplo a seguir ilustra o uso de DefineResource para adicionar um recurso externo ao atual ModuleBuilder.

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'");
      }
   }

Comentários

O chamador não deve chamar os ResourceWriter.Generate() métodos e ResourceWriter.Close() , pois esses métodos são chamados por ModuleBuilder.Save quando o assembly dinâmico é gravado no disco.

Use esse método para inserir um recurso gerenciado. Para inserir um blob de recursos de manifesto, use o DefineManifestResource método . Para obter um resumo da inserção e vinculação de recursos gerenciados e blobs de recursos de manifesto, consulte o DefineManifestResource método .

Observação

A partir do .NET Framework 2.0 Service Pack 1, esse membro não requer ReflectionPermission mais com o ReflectionPermissionFlag.ReflectionEmit sinalizador . (Consulte Problemas de segurança na emissão de reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.

Confira também

Aplica-se a

.NET Framework 4.8.1 e outras versões
Produto Versões
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

DefineResource(String, String, ResourceAttributes)

Define o recurso inserido gerenciado nomeado com os atributos informados que deve ser armazenado neste módulo.

public System.Resources.IResourceWriter DefineResource (string name, string description, System.Reflection.ResourceAttributes attribute);

Parâmetros

name
String

O nome do recurso. name não pode conter nulos inseridos.

description
String

A descrição do recurso.

attribute
ResourceAttributes

Os atributos de recursos.

Retornos

Um gravador de recurso para o recurso definido.

Exceções

O tamanho de name é zero.

name é nulo.

Esse módulo é transitório.

- ou -

O assembly recipiente não é persistente.

Exemplos

O exemplo a seguir ilustra o uso de DefineResource para adicionar um recurso externo ao atual ModuleBuilder.

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'");
      }
   }

Comentários

O chamador não deve chamar os ResourceWriter.Generate() métodos e ResourceWriter.Close() , pois esses métodos são chamados por ModuleBuilder.Save quando o assembly dinâmico é gravado no disco.

Use esse método para inserir um recurso gerenciado. Para inserir um blob de recursos de manifesto, use o DefineManifestResource método . Para obter um resumo da inserção e vinculação de recursos gerenciados e blobs de recursos de manifesto, consulte o DefineManifestResource método .

Observação

A partir do .NET Framework 2.0 Service Pack 1, esse membro não requer ReflectionPermission mais com o ReflectionPermissionFlag.ReflectionEmit sinalizador . (Consulte Problemas de segurança na emissão de reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.

Confira também

Aplica-se a

.NET Framework 4.8.1 e outras versões
Produto Versões
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1