次の方法で共有


ModuleBuilder.DefineResource メソッド (String, String)

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

Overloads Public Function DefineResource( _
   ByVal name As String, _   ByVal description As String _) As IResourceWriter
[C#]
public IResourceWriter DefineResource(stringname,stringdescription);
[C++]
public: IResourceWriter* DefineResource(String* name,String* description);
[JScript]
public function DefineResource(
   name : String,description : String) : IResourceWriter;

パラメータ

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

戻り値

定義されたリソースのリソース ライタを返します。

例外

例外の種類 条件
ArgumentException name の長さが 0 です。
ArgumentNullException name が null です。
InvalidOperationException モジュールが遷移的です。

または

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

解説

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

使用例

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

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

[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'.
         IResourceWriter* myResourceWriter =
               myModuleBuilder->DefineResource(S"MyResource.resource", S"Description");
         // Add resources to the resource writer.
         myResourceWriter->AddResource(S"String 1", S"First String");
         myResourceWriter->AddResource(S"String 2", S"Second String");
         myResourceWriter->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++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間 | ModuleBuilder.DefineResource オーバーロードの一覧