_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

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

requiredPermissions

必須のアクセス許可要求

optionalPermissions

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

refusedPermissions

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

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

例外例外
例外種類条件

ArgumentNullException

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

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

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

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

例外例外
例外種類条件

ArgumentNullException

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

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

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

AppDomainUnloadedException

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

解説解説

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

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

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

name パラメータは、VersionOperatingSystem コンストラクタパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号リビジョン番号ではなくメジャー バージョン番号マイナ バージョン番号だけが永続化されます。たとえば、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

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

evidence

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

requiredPermissions

必須のアクセス許可要求

optionalPermissions

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

refusedPermissions

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

isSynchronized

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

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

例外例外
例外種類条件

ArgumentNullException

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

AppDomainUnloadedException

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

解説解説

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

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

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

isSynchronizedtrue場合、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

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

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

または

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

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

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

evidence

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

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

例外例外
例外種類条件

ArgumentNullException

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

AppDomainUnloadedException

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

解説解説

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

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

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

name パラメータは、VersionOperatingSystem コンストラクタパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号リビジョン番号ではなくメジャー バージョン番号マイナ バージョン番号だけが永続化されます。たとえば、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

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

evidence

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

requiredPermissions

必須のアクセス許可要求

optionalPermissions

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

refusedPermissions

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

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

例外例外
例外種類条件

ArgumentNullException

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

AppDomainUnloadedException

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

解説解説

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

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

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

name パラメータは、VersionOperatingSystem コンストラクタパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号リビジョン番号ではなくメジャー バージョン番号マイナ バージョン番号だけが永続化されます。たとえば、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

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

AppDomainUnloadedException

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

解説解説

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

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

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

name パラメータは、VersionOperatingSystem コンストラクタパラメータとして間接的に指定します。ただし、このメソッドでは、ビルド番号リビジョン番号ではなくメジャー バージョン番号マイナ バージョン番号だけが永続化されます。たとえば、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

namenull 参照 (Visual Basic では Nothing) です。

ArgumentException

nameName プロパティnull 参照 (Visual Basic では Nothing) です。

または

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

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) メソッド オーバーロードへのバージョン依存しないアクセス用意されています。
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「_AppDomain.DefineDynamicAssembly」の関連用語

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

   

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



_AppDomain.DefineDynamicAssemblyのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS