AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, Evidence)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


完全に信頼されている呼び出し元だけが、動的な 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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


完全に信頼された呼び出し元だけが、動的な 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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess)
アセンブリ: 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: 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
戻り値
作成された動的アセンブリを表します。


このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


完全に信頼されている呼び出し元だけが、動的な 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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


完全に信頼されている呼び出し元だけが、動的な 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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AppDomain.DefineDynamicAssembly メソッド (AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


完全に信頼されている呼び出し元だけが、動的な 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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.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)
アセンブリ: 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
戻り値
作成された動的アセンブリを表します。


このメソッドは、現在のアプリケーション ドメインで動的アセンブリを定義するためだけに使用してください。詳細については、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! }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


_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のページへのリンク