次の方法で共有


ModuleBuilder.DefineResource メソッド

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

オーバーロードの一覧

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

[Visual Basic] Overloads Public Function DefineResource(String, String) As IResourceWriter

[C#] public IResourceWriter DefineResource(string, string);

[C++] public: IResourceWriter* DefineResource(String*, String*);

[JScript] public function DefineResource(String, String) : IResourceWriter;

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

[Visual Basic] Overloads Public Function DefineResource(String, String, ResourceAttributes) As IResourceWriter

[C#] public IResourceWriter DefineResource(string, string, ResourceAttributes);

[C++] public: IResourceWriter* DefineResource(String*, String*, ResourceAttributes);

[JScript] public function DefineResource(String, String, ResourceAttributes) : IResourceWriter;

使用例

[Visual Basic, C#, C++] 次のコード例は、DefineResource を使用して、現在の ModuleBuilder に外部リソースを追加する方法を示しています。

[Visual Basic, C#, C++] メモ   ここでは、DefineResource のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
Imports System
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 'New 
End Class 'CodeGenerator

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 'Main
End Class 'CallerClass

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

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;

public __gc class CodeGenerator {
public:
   CodeGenerator() {
      // Get the current application domain for the current thread.
      AppDomain*  currentDomain = AppDomain::CurrentDomain;

      AssemblyName* myAssemblyName = new AssemblyName();
      myAssemblyName->Name = S"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(S"TempModule",
         S"TempModule.netmodule", true);
      // Define the managed embedded resource, 'MyResource' in 'TempModule'
      // with the specified attribute.
      IResourceWriter* writer =
         myModuleBuilder->DefineResource(S"MyResource.resource",
         S"Description", ResourceAttributes::Public);
      // Add resources to the resource writer.
      writer->AddResource(S"String 1", S"First String");
      writer->AddResource(S"String 2", S"Second String");
      writer->AddResource(S"String 3", S"Third String");
      myAssemblyBuilder->Save(S"MyAssembly.dll");
   }
};

int main() {
   CodeGenerator* myGenerator = new CodeGenerator();
   Console::WriteLine(S"A resource named 'MyResource::resource' has been created and can be viewed in the 'MyAssembly.dll'");
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間