AppDomain.DefineDynamicAssemblyとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > AppDomain.DefineDynamicAssemblyの意味・解説 

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)

名前、アクセス モード、ストレージ ディレクトリ、およびアクセス許可要求を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    dir As String, _
    requiredPermissions As PermissionSet, _
    optionalPermissions As PermissionSet, _
    refusedPermissions As PermissionSet _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim dir As String
Dim requiredPermissions As PermissionSet
Dim optionalPermissions As PermissionSet
Dim refusedPermissions As PermissionSet
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, dir, requiredPermissions,
 optionalPermissions, refusedPermissions)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    string dir,
    PermissionSet requiredPermissions,
    PermissionSet optionalPermissions,
    PermissionSet refusedPermissions
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    String^ dir, 
    PermissionSet^ requiredPermissions, 
    PermissionSet^ optionalPermissions, 
    PermissionSet^ refusedPermissions
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    String dir, 
    PermissionSet requiredPermissions, 
    PermissionSet optionalPermissions, 
    PermissionSet refusedPermissions
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    dir : String, 
    requiredPermissions : PermissionSet, 
    optionalPermissions : PermissionSet, 
    refusedPermissions : PermissionSet
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

dir

アセンブリを保存するディレクトリの名前。dir が null 参照 (Visual Basic では Nothing) の場合は、現在のディレクトリが既定で使用されます。

requiredPermissions

必須のアクセス許可要求。

optionalPermissions

オプションのアクセス許可要求。

refusedPermissions

拒否されたアクセス許可要求。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説
使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String)

名前、アクセス モード、およびストレージ ディレクトリを指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    dir As String _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim dir As String
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, dir)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    string dir
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    String^ dir
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    String dir
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    dir : String
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

dir

アセンブリを保存するディレクトリの名前。dir が null 参照 (Visual Basic では Nothing) の場合は、現在のディレクトリが既定で使用されます。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説
使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, Evidence)

名前、アクセス モード、および証拠を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    evidence As Evidence _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim evidence As Evidence
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, evidence)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    Evidence evidence
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    Evidence^ evidence
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    Evidence evidence
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    evidence : Evidence
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

evidence

動的アセンブリに指定する証拠。証拠は、ポリシーの解決に使用する証拠の最終セットを変更されないために使用されます。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説

完全に信頼されている呼び出し元だけが、動的な Assembly を定義するときに evidence を指定できます。ランタイムは、指定された Evidence をセキュリティ ポリシーを通じて割り当て、アセンブリに与えられるアクセス許可を確認します。信頼性が一部しか確認されていない呼び出し元は、evidence として null を指定する必要があります。evidence が null 参照 (Visual Basic では Nothing) の場合、ランタイムはアクセス許可セット (与えられるアクセス許可と拒否されるアクセス許可の現在のセット) を、呼び出し元の Assembly から、定義中の動的な Assembly にコピーし、ポリシーを解決済みとしてマークします。

動的な Assembly をディスクに保存する場合は、後からそのアセンブリを読み込むときには、その Assembly が保存された場所に関連付けられたポリシーに基づいて、アセンブリに与えられるアクセス許可が取得されます。

このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、Load(AssemblyName) メソッド オーバーロードのトピックを参照してください。

name パラメータは、Version を OperatingSystem コンストラクタのパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号とリビジョン番号ではなく、メジャー バージョン番号とマイナ バージョン番号だけが永続化されます。たとえば、LoadFrom メソッドを使用して、アセンブリに対して指定されたこの Version オブジェクトを間接的に回復した場合、そのオブジェクトのメジャー バージョン番号とマイナ バージョン番号だけが最初に指定されたままの値になります。

使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)

名前、アクセス モード、ストレージ ディレクトリ、証拠、アクセス許可要求、および同期オプションを指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    dir As String, _
    evidence As Evidence, _
    requiredPermissions As PermissionSet, _
    optionalPermissions As PermissionSet, _
    refusedPermissions As PermissionSet, _
    isSynchronized As Boolean _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim dir As String
Dim evidence As Evidence
Dim requiredPermissions As PermissionSet
Dim optionalPermissions As PermissionSet
Dim refusedPermissions As PermissionSet
Dim isSynchronized As Boolean
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, dir, evidence, requiredPermissions,
 optionalPermissions, refusedPermissions, isSynchronized)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    string dir,
    Evidence evidence,
    PermissionSet requiredPermissions,
    PermissionSet optionalPermissions,
    PermissionSet refusedPermissions,
    bool isSynchronized
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    String^ dir, 
    Evidence^ evidence, 
    PermissionSet^ requiredPermissions, 
    PermissionSet^ optionalPermissions, 
    PermissionSet^ refusedPermissions, 
    bool isSynchronized
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    String dir, 
    Evidence evidence, 
    PermissionSet requiredPermissions, 
    PermissionSet optionalPermissions, 
    PermissionSet refusedPermissions, 
    boolean isSynchronized
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    dir : String, 
    evidence : Evidence, 
    requiredPermissions : PermissionSet, 
    optionalPermissions : PermissionSet, 
    refusedPermissions : PermissionSet, 
    isSynchronized : boolean
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

dir

動的アセンブリを保存するディレクトリの名前。dir が null 参照 (Visual Basic では Nothing) の場合は、現在のディレクトリが既定で使用されます。

evidence

動的アセンブリに指定する証拠。証拠は、ポリシーの解決に使用する証拠の最終セットを変更されないために使用されます。

requiredPermissions

必須のアクセス許可要求。

optionalPermissions

オプションのアクセス許可要求。

refusedPermissions

拒否されたアクセス許可要求。

isSynchronized

動的アセンブリ内のモジュール、型、およびメンバの作成を同期する場合は true。それ以外の場合は false。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説

完全に信頼された呼び出し元だけが、動的な Assembly を定義するときに証拠を指定できます。ランタイムは、指定された Evidence をセキュリティ ポリシーを通じて割り当て、アセンブリに与えられるアクセス許可を確認します。信頼性が一部しか確認されていない呼び出し元は、evidence パラメータに null 参照 (Visual Basic では Nothing) を指定する必要があります。evidence が null 参照 (Visual Basic では Nothing) の場合、ランタイムはアクセス許可セット (与えられるアクセス許可と拒否されるアクセス許可の現在のセット) を、呼び出し元の Assembly から、定義中の動的な Assembly にコピーし、ポリシーを解決済みとしてマークします。

動的な Assembly をディスクに保存する場合は、後からそのアセンブリを読み込むときには、その Assembly が保存された場所に関連付けられたポリシーに基づいて、アセンブリに与えられるアクセス許可が取得されます。

name パラメータは、Version オブジェクトを OperatingSystem コンストラクタのパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号とリビジョン番号ではなく、メジャー バージョン番号とマイナ バージョン番号だけが永続化されます。つまり、たとえば、LoadFrom メソッドを使用して、アセンブリに対して指定されたこの Version オブジェクトを間接的に回復した場合、そのオブジェクトのメジャー バージョン番号とマイナ バージョン番号だけが最初に指定されたままの値になります。

isSynchronized が true の場合、AssemblyBuilder のメソッド (DefineDynamicModule、DefineResource、AddResourceFile、GetDynamicModule、SetEntryPoint、Save) が同期されます。これらのメソッドのうち 2 つを、それぞれ異なるスレッドで呼び出した場合、一方のメソッドは、もう一方のメソッドが完了するまでブロックします。

使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess)

名前とアクセス モードを指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリのアクセス モード。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

呼び出し元に、必要なアクセス許可がありません。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説
使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence)

名前、アクセス モード、ストレージ ディレクトリ、および証拠を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    dir As String, _
    evidence As Evidence _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim dir As String
Dim evidence As Evidence
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, dir, evidence)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    string dir,
    Evidence evidence
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    String^ dir, 
    Evidence^ evidence
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    String dir, 
    Evidence evidence
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    dir : String, 
    evidence : Evidence
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

dir

アセンブリを保存するディレクトリの名前。dir が null 参照 (Visual Basic では Nothing) の場合は、現在のディレクトリが既定で使用されます。

evidence

動的アセンブリに指定する証拠。証拠は、ポリシーの解決に使用する証拠の最終セットを変更されないために使用されます。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説

完全に信頼されている呼び出し元だけが、動的な Assembly を定義するときに evidence を指定できます。ランタイムは、指定された Evidence をセキュリティ ポリシーを通じて割り当て、アセンブリに与えられるアクセス許可を確認します。信頼性が一部しか確認されていない呼び出し元は、evidence として null を指定する必要があります。evidence が null 参照 (Visual Basic では Nothing) の場合、ランタイムはアクセス許可セット (与えられるアクセス許可と拒否されるアクセス許可の現在のセット) を、呼び出し元の Assembly から、定義中の動的な Assembly にコピーし、ポリシーを解決済みとしてマークします。

動的な Assembly をディスクに保存する場合は、後からそのアセンブリを読み込むときには、その Assembly が保存された場所に関連付けられたポリシーに基づいて、アセンブリに与えられるアクセス許可が取得されます。

このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、Load(AssemblyName) メソッド オーバーロードのトピックを参照してください。

name パラメータは、Version を OperatingSystem コンストラクタのパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号とリビジョン番号ではなく、メジャー バージョン番号とマイナ バージョン番号だけが永続化されます。たとえば、LoadFrom メソッドを使用して、アセンブリに対して指定されたこの Version オブジェクトを間接的に回復した場合、そのオブジェクトのメジャー バージョン番号とマイナ バージョン番号だけが最初に指定されたままの値になります。

使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)

名前、アクセス モード、ストレージ ディレクトリ、証拠、およびアクセス許可要求を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    dir As String, _
    evidence As Evidence, _
    requiredPermissions As PermissionSet, _
    optionalPermissions As PermissionSet, _
    refusedPermissions As PermissionSet _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim dir As String
Dim evidence As Evidence
Dim requiredPermissions As PermissionSet
Dim optionalPermissions As PermissionSet
Dim refusedPermissions As PermissionSet
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, dir, evidence, requiredPermissions,
 optionalPermissions, refusedPermissions)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    string dir,
    Evidence evidence,
    PermissionSet requiredPermissions,
    PermissionSet optionalPermissions,
    PermissionSet refusedPermissions
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    String^ dir, 
    Evidence^ evidence, 
    PermissionSet^ requiredPermissions, 
    PermissionSet^ optionalPermissions, 
    PermissionSet^ refusedPermissions
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    String dir, 
    Evidence evidence, 
    PermissionSet requiredPermissions, 
    PermissionSet optionalPermissions, 
    PermissionSet refusedPermissions
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    dir : String, 
    evidence : Evidence, 
    requiredPermissions : PermissionSet, 
    optionalPermissions : PermissionSet, 
    refusedPermissions : PermissionSet
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

dir

アセンブリを保存するディレクトリの名前。dir が null 参照 (Visual Basic では Nothing) の場合は、現在のディレクトリが既定で使用されます。

evidence

動的アセンブリに指定する証拠。証拠は、ポリシーの解決に使用する証拠の最終セットを変更されないために使用されます。

requiredPermissions

必須のアクセス許可要求。

optionalPermissions

オプションのアクセス許可要求。

refusedPermissions

拒否されたアクセス許可要求。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説

完全に信頼されている呼び出し元だけが、動的な Assembly を定義するときに evidence を指定できます。ランタイムは、指定された Evidence をセキュリティ ポリシーを通じて割り当て、アセンブリに与えられるアクセス許可を確認します。信頼性が一部しか確認されていない呼び出し元は、evidence として null を指定する必要があります。evidence が null 参照 (Visual Basic では Nothing) の場合、ランタイムはアクセス許可セット (与えられるアクセス許可と拒否されるアクセス許可の現在のセット) を、呼び出し元の Assembly から、定義中の動的な Assembly にコピーし、ポリシーを解決済みとしてマークします。

動的な Assembly をディスクに保存する場合は、後からそのアセンブリを読み込むときには、その Assembly が保存された場所に関連付けられたポリシーに基づいて、アセンブリに与えられるアクセス許可が取得されます。

このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、Load(AssemblyName) メソッド オーバーロードのトピックを参照してください。

name パラメータは、Version を OperatingSystem コンストラクタのパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号とリビジョン番号ではなく、メジャー バージョン番号とマイナ バージョン番号だけが永続化されます。たとえば、LoadFrom メソッドを使用して、アセンブリに対して指定されたこの Version オブジェクトを間接的に回復した場合、そのオブジェクトのメジャー バージョン番号とマイナ バージョン番号だけが最初に指定されたままの値になります。

使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)

名前、アクセス モード、証拠、およびアクセス許可要求を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    evidence As Evidence, _
    requiredPermissions As PermissionSet, _
    optionalPermissions As PermissionSet, _
    refusedPermissions As PermissionSet _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim evidence As Evidence
Dim requiredPermissions As PermissionSet
Dim optionalPermissions As PermissionSet
Dim refusedPermissions As PermissionSet
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, evidence, requiredPermissions,
 optionalPermissions, refusedPermissions)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    Evidence evidence,
    PermissionSet requiredPermissions,
    PermissionSet optionalPermissions,
    PermissionSet refusedPermissions
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    Evidence^ evidence, 
    PermissionSet^ requiredPermissions, 
    PermissionSet^ optionalPermissions, 
    PermissionSet^ refusedPermissions
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    Evidence evidence, 
    PermissionSet requiredPermissions, 
    PermissionSet optionalPermissions, 
    PermissionSet refusedPermissions
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    evidence : Evidence, 
    requiredPermissions : PermissionSet, 
    optionalPermissions : PermissionSet, 
    refusedPermissions : PermissionSet
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

evidence

動的アセンブリに指定する証拠。証拠は、ポリシーの解決に使用する証拠の最終セットを変更されないために使用されます。

requiredPermissions

必須のアクセス許可要求。

optionalPermissions

オプションのアクセス許可要求。

refusedPermissions

拒否されたアクセス許可要求。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説

完全に信頼されている呼び出し元だけが、動的な Assembly を定義するときに evidence を指定できます。ランタイムは、指定された Evidence をセキュリティ ポリシーを通じて割り当て、アセンブリに与えられるアクセス許可を確認します。信頼性が一部しか確認されていない呼び出し元は、evidence として null を指定する必要があります。evidence が null 参照 (Visual Basic では Nothing) の場合、ランタイムはアクセス許可セット (与えられるアクセス許可と拒否されるアクセス許可の現在のセット) を、呼び出し元の Assembly から、定義中の動的な Assembly にコピーし、ポリシーを解決済みとしてマークします。

動的な Assembly をディスクに保存する場合は、後からそのアセンブリを読み込むときには、その Assembly が保存された場所に関連付けられたポリシーに基づいて、アセンブリに与えられるアクセス許可が取得されます。

このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、Load(AssemblyName) メソッド オーバーロードのトピックを参照してください。

name パラメータは、Version を OperatingSystem コンストラクタのパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号とリビジョン番号ではなく、メジャー バージョン番号とマイナ バージョン番号だけが永続化されます。たとえば、LoadFrom メソッドを使用して、アセンブリに対して指定されたこの Version オブジェクトを間接的に回復した場合、そのオブジェクトのメジャー バージョン番号とマイナ バージョン番号だけが最初に指定されたままの値になります。

使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.DefineDynamicAssembly メソッド

現在のアプリケーション ドメインで動的アセンブリを定義します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess) 名前とアクセス モードを指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, Evidence) 名前、アクセス モード、および証拠を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String) 名前、アクセス モード、およびストレージ ディレクトリを指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence) 名前、アクセス モード、ストレージ ディレクトリ、および証拠を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet) 名前、アクセス モード、およびアクセス許可要求を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet) 名前、アクセス モード、証拠、およびアクセス許可要求を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet) 名前、アクセス モード、ストレージ ディレクトリ、およびアクセス許可要求を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet) 名前、アクセス モード、ストレージ ディレクトリ、証拠、およびアクセス許可要求を指定して、動的アセンブリを定義します。
AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean) 名前、アクセス モード、ストレージ ディレクトリ、証拠、アクセス許可要求、および同期オプションを指定して、動的アセンブリを定義します。
参照参照

AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)

名前、アクセス モード、およびアクセス許可要求を指定して、動的アセンブリを定義します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineDynamicAssembly ( _
    name As AssemblyName, _
    access As AssemblyBuilderAccess, _
    requiredPermissions As PermissionSet, _
    optionalPermissions As PermissionSet, _
    refusedPermissions As PermissionSet _
) As AssemblyBuilder
Dim instance As AppDomain
Dim name As AssemblyName
Dim access As AssemblyBuilderAccess
Dim requiredPermissions As PermissionSet
Dim optionalPermissions As PermissionSet
Dim refusedPermissions As PermissionSet
Dim returnValue As AssemblyBuilder

returnValue = instance.DefineDynamicAssembly(name, access, requiredPermissions, optionalPermissions,
 refusedPermissions)
public AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name,
    AssemblyBuilderAccess access,
    PermissionSet requiredPermissions,
    PermissionSet optionalPermissions,
    PermissionSet refusedPermissions
)
public:
virtual AssemblyBuilder^ DefineDynamicAssembly (
    AssemblyName^ name, 
    AssemblyBuilderAccess access, 
    PermissionSet^ requiredPermissions, 
    PermissionSet^ optionalPermissions, 
    PermissionSet^ refusedPermissions
) sealed
public final AssemblyBuilder DefineDynamicAssembly (
    AssemblyName name, 
    AssemblyBuilderAccess access, 
    PermissionSet requiredPermissions, 
    PermissionSet optionalPermissions, 
    PermissionSet refusedPermissions
)
public final function DefineDynamicAssembly
 (
    name : AssemblyName, 
    access : AssemblyBuilderAccess, 
    requiredPermissions : PermissionSet, 
    optionalPermissions : PermissionSet, 
    refusedPermissions : PermissionSet
) : AssemblyBuilder

パラメータ

name

動的アセンブリの一意の ID。

access

動的アセンブリにアクセスするときのモード。

requiredPermissions

必須のアクセス許可要求。

optionalPermissions

オプションのアクセス許可要求。

refusedPermissions

拒否されたアクセス許可要求。

戻り値
作成された動的アセンブリを表します。

例外例外
例外の種類条件

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

ArgumentException

name の Name プロパティが null 参照 (Visual Basic では Nothing) です。

または

name の Name プロパティが空白で始まっているか、スラッシュまたは円記号が含まれています。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメインで試行されています。

解説解説
使用例使用例

DefineDynamicAssembly メソッドおよび AssemblyResolve イベントを次のサンプルで示します。

このコード例を実行するには、アセンブリの完全限定名を指定する必要があります。アセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください。

Imports System
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub 'Main
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyDynamicType
   
   Function MyResolveEventHandler(sender As
 Object, args As ResolveEventArgs) As
 System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender,
 AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As
 AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test 
using System;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!
      
      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
      
      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain
 domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
 
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }   

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs
 args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }
   
   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.
   
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType",
 TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^
 domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^
 args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender)
 );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule"
 );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType",
 TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor(
 MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler
 );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

_AppDomain.DefineDynamicAssembly メソッド

COM オブジェクトに、System.AppDomain.DefineDynamicAssembly メソッドへのバージョンに依存しないアクセスが用意されています。
オーバーロードの一覧オーバーロードの一覧

名前 説明
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, Evidence) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,Evidence) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,String) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,String,Evidence) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,PermissionSet,PermissionSet,PermissionSet) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,Evidence,PermissionSet,PermissionSet,PermissionSet) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,String,PermissionSet,PermissionSet,PermissionSet) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,String,Evidence,PermissionSet,PermissionSet,PermissionSet) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
_AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean) COM オブジェクトに、AppDomain.DefineDynamicAssembly(AssemblyName,AssemblyBuilderAccess,String,Evidence,PermissionSet,PermissionSet,PermissionSet,Boolean) メソッド オーバーロードへのバージョンに依存しないアクセスが用意されています。
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「AppDomain.DefineDynamicAssembly」の関連用語

AppDomain.DefineDynamicAssemblyのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



AppDomain.DefineDynamicAssemblyのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS