英語で読む

次の方法で共有


ModuleBuilder.DefineResource メソッド

定義

このモジュールに格納するマネージド埋め込みリソースを定義します。

オーバーロード

DefineResource(String, String)

このモジュールに格納する名前付きマネージド埋め込みリソースを定義します。

DefineResource(String, String, ResourceAttributes)

このモジュールに格納する指定した属性の名前付きマネージド埋め込みリソースを定義します。

DefineResource(String, String)

このモジュールに格納する名前付きマネージド埋め込みリソースを定義します。

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

パラメーター

name
String

リソースの名前。 name に埋め込み null 値を含めることはできません。

description
String

リソースの説明。

戻り値

定義されたリソースのリソース ライター。

例外

name の長さが 0 です。

name が null です。

モジュールが遷移的です。

- または -

格納しているアセンブリが永続化できません。

次の例は、 を使用して現在ModuleBuilderDefineResource に外部リソースを追加する方法を示しています。

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

注釈

これらのメソッドは、動的アセンブリがディスクにResourceWriter.Generate()書き込まれるときに によってModuleBuilder.Save呼び出されるため、呼び出し元は メソッドと ResourceWriter.Close() メソッドを呼び出さないでください。

マネージド リソースを埋め込むには、このメソッドを使用します。 マニフェスト リソース BLOB を埋め込むには、 メソッドを使用します DefineManifestResource 。 マネージド リソースとマニフェスト リソース BLOB の埋め込みとリンクの概要については、 メソッドを DefineManifestResource 参照してください。

注意

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

こちらもご覧ください

適用対象

.NET Framework 4.8.1 およびその他のバージョン
製品 バージョン
.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)

このモジュールに格納する指定した属性の名前付きマネージド埋め込みリソースを定義します。

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

パラメーター

name
String

リソースの名前。 name に埋め込み null 値を含めることはできません。

description
String

リソースの説明。

attribute
ResourceAttributes

リソースの属性。

戻り値

定義されたリソースのリソース ライター。

例外

name の長さが 0 です。

name が null です。

モジュールが遷移的です。

- または -

格納しているアセンブリが永続化できません。

次の例は、DefineResource を使用して現在 ModuleBuilderの に外部リソースを追加する方法を示しています。

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

注釈

これらのメソッドは、動的アセンブリがディスクにResourceWriter.Generate()書き込まれるときに によってModuleBuilder.Save呼び出されるため、呼び出し元は メソッドと ResourceWriter.Close() メソッドを呼び出さないでください。

マネージド リソースを埋め込むには、このメソッドを使用します。 マニフェスト リソース BLOB を埋め込むには、 メソッドを使用します DefineManifestResource 。 マネージド リソースとマニフェスト リソース BLOB の埋め込みとリンクの概要については、 メソッドを DefineManifestResource 参照してください。

注意

.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。

こちらもご覧ください

適用対象

.NET Framework 4.8.1 およびその他のバージョン
製品 バージョン
.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