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

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

AppDomain.CreateInstanceAndUnwrap メソッド (String, String)

指定した型の新しいインスタンスを作成します。パラメータには、型が定義されているアセンブリの名前と型の名前を指定します。

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

Public Function CreateInstanceAndUnwrap ( _
    assemblyName As String, _
    typeName As String _
) As Object
Dim instance As AppDomain
Dim assemblyName As String
Dim typeName As String
Dim returnValue As Object

returnValue = instance.CreateInstanceAndUnwrap(assemblyName, typeName)
public Object CreateInstanceAndUnwrap (
    string assemblyName,
    string typeName
)
public:
Object^ CreateInstanceAndUnwrap (
    String^ assemblyName, 
    String^ typeName
)
public Object CreateInstanceAndUnwrap (
    String assemblyName, 
    String typeName
)
public function CreateInstanceAndUnwrap (
    assemblyName : String, 
    typeName : String
) : Object

パラメータ

assemblyName

アセンブリの表示名。詳細については、Assembly.FullName のトピックを参照してください。

typeName

要求する型の完全修飾名。アセンブリは指定せずに、名前空間だけを指定します。この名前は、Type.FullName プロパティによって返されます。

戻り値
typeName で指定したオブジェクトのインスタンス。

例外例外
例外の種類条件

ArgumentNullException

assemblyName または typeName が null 参照 (Visual Basic では Nothing) です。

MissingMethodException

一致するパブリック コンストラクタが見つかりませんでした。

TypeLoadException

assemblyName で、typename が見つかりませんでした。

FileNotFoundException

assemblyName は見つかりませんでした。

MethodAccessException

呼び出し元に、このコンストラクタを呼び出すためのアクセス許可がありません。

AppDomainUnloadedException

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

BadImageFormatException

assemblyName が有効なアセンブリではありません。

FileLoadException

1 つのアセンブリまたはモジュールが 2 つの異なる証拠を使用して 2 回読み込まれました。

解説解説
使用例使用例
Imports System
Imports System.IO
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Runtime.Remoting



Class ADDyno
   
   
   
   Public Shared Function
 CreateADynamicAssembly(ByRef myNewDomain As
 AppDomain, executableNameNoExe As String) As Type
      
      Dim executableName As String
 = executableNameNoExe + ".exe"
      
      Dim myAsmName As New
 AssemblyName()
      myAsmName.Name = executableNameNoExe
      myAsmName.CodeBase = Environment.CurrentDirectory
      
      Dim myAsmBuilder As AssemblyBuilder =
 myNewDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
      Console.WriteLine("-- Dynamic Assembly instantiated.")
      
      Dim myModBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule(executableNameNoExe,
 executableName)
      
      Dim myTypeBuilder As TypeBuilder = myModBuilder.DefineType(executableNameNoExe,
 TypeAttributes.Public, GetType(MarshalByRefObject))
      
      Dim myFCMethod As MethodBuilder = myTypeBuilder.DefineMethod("CountLocalFiles",
 MethodAttributes.Public Or MethodAttributes.Static, Nothing,
 New Type() {})
      
      Dim currentDirGetMI As MethodInfo = GetType(Environment).GetProperty("CurrentDirectory").GetGetMethod()
      Dim writeLine0objMI As MethodInfo = GetType(Console).GetMethod("WriteLine",
 New Type() {GetType(String)})
      Dim writeLine2objMI As MethodInfo = GetType(Console).GetMethod("WriteLine",
 New Type() {GetType(String), GetType(Object),
 GetType(Object)})
      Dim getFilesMI As MethodInfo = GetType(Directory).GetMethod("GetFiles",
 New Type() {GetType(String)})
      
      myFCMethod.InitLocals = True
      
      Dim myFCIL As ILGenerator = myFCMethod.GetILGenerator()
      
      Console.WriteLine("-- Generating MSIL method body...")
      Dim v0 As LocalBuilder = myFCIL.DeclareLocal(GetType(String))
      Dim v1 As LocalBuilder = myFCIL.DeclareLocal(GetType(Integer))
      Dim v2 As LocalBuilder = myFCIL.DeclareLocal(GetType(String))
      Dim v3 As LocalBuilder = myFCIL.DeclareLocal(GetType(String()))
      
      Dim evalForEachLabel As Label = myFCIL.DefineLabel()
      Dim topOfForEachLabel As Label = myFCIL.DefineLabel()
      
      ' Build the method body.
      myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, Nothing)
      myFCIL.Emit(OpCodes.Stloc_S, v0)
      myFCIL.Emit(OpCodes.Ldc_I4_0)
      myFCIL.Emit(OpCodes.Stloc_S, v1)
      myFCIL.Emit(OpCodes.Ldstr, "---")
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      myFCIL.Emit(OpCodes.Ldloc_S, v0)
      myFCIL.EmitCall(OpCodes.Call, getFilesMI, Nothing)
      myFCIL.Emit(OpCodes.Stloc_S, v3)
      
      myFCIL.Emit(OpCodes.Br_S, evalForEachLabel)
      
      ' foreach loop starts here.
      myFCIL.MarkLabel(topOfForEachLabel)
      
      ' Load array of strings and index, store value at index for output.
      myFCIL.Emit(OpCodes.Ldloc_S, v3)
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldelem_Ref)
      myFCIL.Emit(OpCodes.Stloc_S, v2)
      
      myFCIL.Emit(OpCodes.Ldloc_S, v2)
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      
      ' Increment counter by one.
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldc_I4_1)
      myFCIL.Emit(OpCodes.Add)
      myFCIL.Emit(OpCodes.Stloc_S, v1)
      
      ' Determine if end of file list array has been reached.
      myFCIL.MarkLabel(evalForEachLabel)
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldloc_S, v3)
      myFCIL.Emit(OpCodes.Ldlen)
      myFCIL.Emit(OpCodes.Conv_I4)
      myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel)
      'foreach loop end here.
      myFCIL.Emit(OpCodes.Ldstr, "---")
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in {1}.")
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Box, GetType(Integer))
      myFCIL.Emit(OpCodes.Ldloc_S, v0)
      myFCIL.EmitCall(OpCodes.Call, writeLine2objMI, Nothing)
      
      myFCIL.Emit(OpCodes.Ret)
      
      Dim myType As Type = myTypeBuilder.CreateType()
      
      myAsmBuilder.SetEntryPoint(myFCMethod)
      myAsmBuilder.Save(executableName)
      Console.WriteLine("-- Method generated, type completed,
 and assembly saved to disk.")
      
      Return myType
   End Function 'CreateADynamicAssembly
    
   
   Public Shared Sub Main()
      
      Dim executableName As String
 = Nothing
      Dim domainDir As String
      
      Console.Write("Enter a name for the file counting assembly:
 ")
      Dim executableNameNoExe As String
 = Console.ReadLine()
      executableName = executableNameNoExe + ".exe"
      Console.WriteLine("---")
      
      domainDir = Environment.CurrentDirectory
      
      Dim curDomain As AppDomain = Thread.GetDomain()
      
      
      ' Create a new AppDomain, with the current directory as the base.
      Console.WriteLine("Current Directory: {0}",
 Environment.CurrentDirectory)
      Dim mySetupInfo As New
 AppDomainSetup()
      mySetupInfo.ApplicationBase = domainDir
      mySetupInfo.ApplicationName = executableNameNoExe
      mySetupInfo.LoaderOptimization = LoaderOptimization.SingleDomain
      
      Dim myDomain As AppDomain = AppDomain.CreateDomain(executableNameNoExe,
 Nothing, mySetupInfo)
      
      Console.WriteLine("Creating a new AppDomain '{0}'...",
 executableNameNoExe)
      
      Console.WriteLine("-- Base Directory = '{0}'", myDomain.BaseDirectory)
      Console.WriteLine("-- Shadow Copy? = '{0}'", myDomain.ShadowCopyFiles)
      
      Console.WriteLine("---")
      Dim myFCType As Type = CreateADynamicAssembly(curDomain,
 executableNameNoExe)
      
      Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
 myDomain.BaseDirectory.ToString())
      
      
      Dim bFlags As BindingFlags = BindingFlags.Public
 Or BindingFlags.CreateInstance Or BindingFlags.Instance
      
      Dim myObjInstance As [Object] = myDomain.CreateInstanceAndUnwrap(executableNameNoExe,
 executableNameNoExe, False, bFlags, Nothing,
 Nothing, Nothing, Nothing, Nothing)
      
      Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...", myObjInstance.ToString())
      
      myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 Nothing, myObjInstance, New Object()
 {})
   End Sub 'Main
End Class 'ADDyno 



using System;
using System.IO;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.Remoting;

class ADDyno

{

   public static Type CreateADynamicAssembly(ref
 AppDomain myNewDomain,
                         string executableNameNoExe)
   {

    string executableName = executableNameNoExe + ".exe";

    AssemblyName myAsmName = new AssemblyName();
    myAsmName.Name = executableNameNoExe;
    myAsmName.CodeBase = Environment.CurrentDirectory;

    AssemblyBuilder myAsmBuilder = myNewDomain.DefineDynamicAssembly(myAsmName,
                        AssemblyBuilderAccess.RunAndSave);
    Console.WriteLine("-- Dynamic Assembly instantiated.");

    ModuleBuilder myModBuilder = myAsmBuilder.DefineDynamicModule(executableNameNoExe
,
                                      executableName);

    TypeBuilder myTypeBuilder = myModBuilder.DefineType(executableNameNoExe,
                        TypeAttributes.Public,
                        typeof(MarshalByRefObject));

    MethodBuilder myFCMethod = myTypeBuilder.DefineMethod("CountLocalFiles"
,
                        MethodAttributes.Public |
                        MethodAttributes.Static,
                        null,
                        new Type[] {  });

    MethodInfo currentDirGetMI = typeof(Environment).GetProperty("CurrentDirectory").GetGetMethod();
    MethodInfo writeLine0objMI = typeof(Console).GetMethod("WriteLine"
,
                     new Type[] { typeof(string)
 });
    MethodInfo writeLine2objMI = typeof(Console).GetMethod("WriteLine"
,
                     new Type[] { typeof(string),
 typeof(object), typeof(object) });
    MethodInfo getFilesMI = typeof(Directory).GetMethod("GetFiles", 
                new Type[] { typeof(string)
 });

    myFCMethod.InitLocals = true;

    ILGenerator myFCIL = myFCMethod.GetILGenerator();

    Console.WriteLine("-- Generating MSIL method body...");
    LocalBuilder v0 = myFCIL.DeclareLocal(typeof(string));
    LocalBuilder v1 = myFCIL.DeclareLocal(typeof(int));
    LocalBuilder v2 = myFCIL.DeclareLocal(typeof(string));
    LocalBuilder v3 = myFCIL.DeclareLocal(typeof(string[]));

    Label evalForEachLabel = myFCIL.DefineLabel();
    Label topOfForEachLabel = myFCIL.DefineLabel();

    // Build the method body.

    myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, null);
    myFCIL.Emit(OpCodes.Stloc_S, v0);
    myFCIL.Emit(OpCodes.Ldc_I4_0);
    myFCIL.Emit(OpCodes.Stloc_S, v1);
    myFCIL.Emit(OpCodes.Ldstr, "---");
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);
    myFCIL.Emit(OpCodes.Ldloc_S, v0);
    myFCIL.EmitCall(OpCodes.Call, getFilesMI, null);
    myFCIL.Emit(OpCodes.Stloc_S, v3);

    myFCIL.Emit(OpCodes.Br_S, evalForEachLabel);

    // foreach loop starts here.
    myFCIL.MarkLabel(topOfForEachLabel);
    
        // Load array of strings and index, store value at index for
 output.
    myFCIL.Emit(OpCodes.Ldloc_S, v3);
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldelem_Ref);
    myFCIL.Emit(OpCodes.Stloc_S, v2);

    myFCIL.Emit(OpCodes.Ldloc_S, v2);
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);

    // Increment counter by one.
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldc_I4_1);
    myFCIL.Emit(OpCodes.Add);
    myFCIL.Emit(OpCodes.Stloc_S, v1);

    // Determine if end of file list array has been reached.
    myFCIL.MarkLabel(evalForEachLabel);
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldloc_S, v3);
    myFCIL.Emit(OpCodes.Ldlen);
    myFCIL.Emit(OpCodes.Conv_I4);
    myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel);
    //foreach loop end here.

    myFCIL.Emit(OpCodes.Ldstr, "---");
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);
    myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in {1}.");
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Box, typeof(int));
    myFCIL.Emit(OpCodes.Ldloc_S, v0);
    myFCIL.EmitCall(OpCodes.Call, writeLine2objMI, null);

    myFCIL.Emit(OpCodes.Ret);

    Type myType = myTypeBuilder.CreateType();

    myAsmBuilder.SetEntryPoint(myFCMethod);
    myAsmBuilder.Save(executableName);        
    Console.WriteLine("-- Method generated, type completed, and assembly saved
 to disk."); 

    return myType;

   }

   public static void Main()
 
   {

    string domainDir, executableName = null;
    
    Console.Write("Enter a name for the file counting assembly:
 ");
    string executableNameNoExe = Console.ReadLine();
    executableName = executableNameNoExe + ".exe";
    Console.WriteLine("---");

    domainDir = Environment.CurrentDirectory;

    AppDomain curDomain = Thread.GetDomain();    


    // Create a new AppDomain, with the current directory as the base.

    Console.WriteLine("Current Directory: {0}", Environment.CurrentDirectory);
    AppDomainSetup mySetupInfo = new AppDomainSetup();
    mySetupInfo.ApplicationBase = domainDir;
    mySetupInfo.ApplicationName = executableNameNoExe;
    mySetupInfo.LoaderOptimization = LoaderOptimization.SingleDomain;

    AppDomain myDomain = AppDomain.CreateDomain(executableNameNoExe,
                    null, mySetupInfo);

    Console.WriteLine("Creating a new AppDomain '{0}'..."
,
                    executableNameNoExe);

    Console.WriteLine("-- Base Directory = '{0}'", myDomain.BaseDirectory);
 
    Console.WriteLine("-- Shadow Copy? = '{0}'", myDomain.ShadowCopyFiles);
 

    Console.WriteLine("---");
    Type myFCType = CreateADynamicAssembly(ref curDomain, 
                     executableNameNoExe);

    Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
              myDomain.BaseDirectory.ToString());


    BindingFlags bFlags = (BindingFlags.Public | BindingFlags.CreateInstance |
                   BindingFlags.Instance);

    Object myObjInstance = myDomain.CreateInstanceAndUnwrap(executableNameNoExe,
                executableNameNoExe, false, bFlags, 
                null, null, null,
 null, null);

    Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...",
               myObjInstance.ToString());

    myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 null,
                myObjInstance, new object[] { });
            
        
   }

}

using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Runtime::Remoting;

ref class ADDyno
{
public:
   static Type^ CreateADynamicAssembly( interior_ptr<AppDomain^>
 myNewDomain, String^ executableNameNoExe )
   {
      String^ executableName = String::Concat( executableNameNoExe, ".exe"
 );
      AssemblyName^ myAsmName = gcnew AssemblyName;
      myAsmName->Name = executableNameNoExe;
      myAsmName->CodeBase = Environment::CurrentDirectory;
      AssemblyBuilder^ myAsmBuilder = ( *myNewDomain)->DefineDynamicAssembly(
 myAsmName, AssemblyBuilderAccess::RunAndSave );
      Console::WriteLine( "-- Dynamic Assembly instantiated." );
      ModuleBuilder^ myModBuilder = myAsmBuilder->DefineDynamicModule( executableNameNoExe,
 executableName );
      TypeBuilder^ myTypeBuilder = myModBuilder->DefineType( executableNameNoExe,
 TypeAttributes::Public, MarshalByRefObject::typeid );
      array<Type^>^temp0 = nullptr;
      MethodBuilder^ myFCMethod = myTypeBuilder->DefineMethod( "CountLocalFiles",
 static_cast<MethodAttributes>(MethodAttributes::Public | MethodAttributes::Static),
 nullptr, temp0 );
      MethodInfo^ currentDirGetMI = Environment::typeid->GetProperty( "CurrentDirectory"
 )->GetGetMethod();
      array<Type^>^temp1 = {String::typeid};
      MethodInfo^ writeLine0objMI = Console::typeid->GetMethod( "WriteLine",
 temp1 );
      array<Type^>^temp2 = {String::typeid,Object::typeid,Object::typeid};
      MethodInfo^ writeLine2objMI = Console::typeid->GetMethod( "WriteLine",
 temp2 );
      array<Type^>^temp3 = {String::typeid};
      MethodInfo^ getFilesMI = Directory::typeid->GetMethod( "GetFiles",
 temp3 );
      myFCMethod->InitLocals = true;
      ILGenerator^ myFCIL = myFCMethod->GetILGenerator();
      Console::WriteLine( "-- Generating MSIL method body..." );
      LocalBuilder^ v0 = myFCIL->DeclareLocal( String::typeid );
      LocalBuilder^ v1 = myFCIL->DeclareLocal( int::typeid
 );
      LocalBuilder^ v2 = myFCIL->DeclareLocal( String::typeid );
      LocalBuilder^ v3 = myFCIL->DeclareLocal( array<String^>::typeid );
      Label evalForEachLabel = myFCIL->DefineLabel();
      Label topOfForEachLabel = myFCIL->DefineLabel();

      // Build the method body.
      myFCIL->EmitCall( OpCodes::Call, currentDirGetMI, nullptr );
      myFCIL->Emit( OpCodes::Stloc_S, v0 );
      myFCIL->Emit( OpCodes::Ldc_I4_0 );
      myFCIL->Emit( OpCodes::Stloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldstr, "---" );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );
      myFCIL->Emit( OpCodes::Ldloc_S, v0 );
      myFCIL->EmitCall( OpCodes::Call, getFilesMI, nullptr );
      myFCIL->Emit( OpCodes::Stloc_S, v3 );
      myFCIL->Emit( OpCodes::Br_S, evalForEachLabel );

      // foreach loop starts here.
      myFCIL->MarkLabel( topOfForEachLabel );

      // Load array of strings and index, store value at index for output.
      myFCIL->Emit( OpCodes::Ldloc_S, v3 );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldelem_Ref );
      myFCIL->Emit( OpCodes::Stloc_S, v2 );
      myFCIL->Emit( OpCodes::Ldloc_S, v2 );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );

      // Increment counter by one.
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldc_I4_1 );
      myFCIL->Emit( OpCodes::Add );
      myFCIL->Emit( OpCodes::Stloc_S, v1 );

      // Determine if end of file list array has been reached.
      myFCIL->MarkLabel( evalForEachLabel );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldloc_S, v3 );
      myFCIL->Emit( OpCodes::Ldlen );
      myFCIL->Emit( OpCodes::Conv_I4 );
      myFCIL->Emit( OpCodes::Blt_S, topOfForEachLabel );

      //foreach loop end here.
      myFCIL->Emit( OpCodes::Ldstr, "---" );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );
      myFCIL->Emit( OpCodes::Ldstr, "There are {0} files in
 {1}." );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Box, int::typeid );
      myFCIL->Emit( OpCodes::Ldloc_S, v0 );
      myFCIL->EmitCall( OpCodes::Call, writeLine2objMI, nullptr );
      myFCIL->Emit( OpCodes::Ret );
      Type^ myType = myTypeBuilder->CreateType();
      myAsmBuilder->SetEntryPoint( myFCMethod );
      myAsmBuilder->Save( executableName );
      Console::WriteLine( "-- Method generated, type completed, and assembly
 saved to disk." );
      return myType;
   }
};

int main()
{
   String^ domainDir;
   String^ executableName = nullptr;
   Console::Write( "Enter a name for the file counting assembly:
 " );
   String^ executableNameNoExe = Console::ReadLine();
   executableName = String::Concat( executableNameNoExe, ".exe" );
   Console::WriteLine( "---" );
   domainDir = Environment::CurrentDirectory;
   AppDomain^ curDomain = Thread::GetDomain();

   // Create a new AppDomain, with the current directory as the base.
   Console::WriteLine( "Current Directory: {0}", Environment::CurrentDirectory
 );
   AppDomainSetup^ mySetupInfo = gcnew AppDomainSetup;
   mySetupInfo->ApplicationBase = domainDir;
   mySetupInfo->ApplicationName = executableNameNoExe;
   mySetupInfo->LoaderOptimization = LoaderOptimization::SingleDomain;
   AppDomain^ myDomain = AppDomain::CreateDomain( executableNameNoExe, nullptr, mySetupInfo
 );
   Console::WriteLine( "Creating a new AppDomain '{0}'...",
 executableNameNoExe );
   Console::WriteLine( "-- Base Directory = '{0}'", myDomain->BaseDirectory
 );
   Console::WriteLine( "-- Shadow Copy? = '{0}'", myDomain->ShadowCopyFiles
 );
   Console::WriteLine( "---" );
   Type^ myFCType = ADDyno::CreateADynamicAssembly(  &curDomain, executableNameNoExe
 );
   Console::WriteLine( "Loading '{0}' from '{1}'...", executableName, myDomain->BaseDirectory
 );
   BindingFlags bFlags = static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::CreateInstance
 | BindingFlags::Instance);
   Object^ myObjInstance = myDomain->CreateInstanceAndUnwrap( executableNameNoExe,
 executableNameNoExe, false, bFlags, nullptr, nullptr, nullptr,
 nullptr, nullptr );
   Console::WriteLine( "Executing method 'CountLocalFiles' in
 {0}...", myObjInstance );
   array<Object^>^temp4 = nullptr;
   myFCType->InvokeMember( "CountLocalFiles", BindingFlags::InvokeMethod,
 nullptr, myObjInstance, temp4 );
}
import System.*;
import System.IO.*;
import System.Threading.*;
import System.Reflection.*;
import System.Reflection.Emit.*;
import System.Runtime.Remoting.*;

class ADDyno
{
    public static Type CreateADynamicAssembly(AppDomain
 myNewDomain, 
        String executableNameNoExe) 
    {
        String executableName = executableNameNoExe + ".exe";
        AssemblyName myAsmName =  new AssemblyName();
        myAsmName.set_Name(executableNameNoExe);
        myAsmName.set_CodeBase(Environment.get_CurrentDirectory());

        AssemblyBuilder myAsmBuilder = 
            myNewDomain.DefineDynamicAssembly(myAsmName, 
            AssemblyBuilderAccess.RunAndSave);
        Console.WriteLine("-- Dynamic Assembly instantiated.");

        ModuleBuilder myModBuilder = 
            myAsmBuilder.DefineDynamicModule(executableNameNoExe, 
            executableName);

        TypeBuilder myTypeBuilder = myModBuilder.DefineType(executableNameNoExe,
            TypeAttributes.Public, MarshalByRefObject.class.ToType());

        MethodBuilder myFCMethod = myTypeBuilder.DefineMethod("CountLocalFiles"
, 
            MethodAttributes.Public | MethodAttributes.Static, null,
 
            new Type[]{});

        MethodInfo currentDirGetMI = Environment.class.ToType().
            GetProperty("CurrentDirectory").GetGetMethod();
        MethodInfo writeLine0ObjMI = Console.class.ToType().
            GetMethod("WriteLine", new Type[]{String.class.ToType()});
        MethodInfo writeLine2ObjMI = Console.class.ToType().
            GetMethod("WriteLine", new Type[]{String.class.ToType(),
 
            Object.class.ToType(), Object.class.ToType()});
        MethodInfo getFilesMI = Directory.class.ToType().GetMethod("GetFiles",
 
            new Type[]{String.class.ToType()});

        myFCMethod.set_InitLocals(true);
        ILGenerator myFCIL = myFCMethod.GetILGenerator();

        Console.WriteLine("-- Generating MSIL method body...");
        LocalBuilder v0 = myFCIL.DeclareLocal(String.class.ToType());
        LocalBuilder v1 = myFCIL.DeclareLocal(int.class.ToType());
        LocalBuilder v2 = myFCIL.DeclareLocal(String.class.ToType());
        LocalBuilder v3 = myFCIL.DeclareLocal(String[].class.ToType());

        Label evalForEachLabel = myFCIL.DefineLabel();
        Label topOfForEachLabel = myFCIL.DefineLabel();

        // Build the method body.
        myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, null);
        myFCIL.Emit(OpCodes.Stloc_S, v0);
        myFCIL.Emit(OpCodes.Ldc_I4_0);
        myFCIL.Emit(OpCodes.Stloc_S, v1);
        myFCIL.Emit(OpCodes.Ldstr, "---");
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);
        myFCIL.Emit(OpCodes.Ldloc_S, v0);
        myFCIL.EmitCall(OpCodes.Call, getFilesMI, null);
        myFCIL.Emit(OpCodes.Stloc_S, v3);

        myFCIL.Emit(OpCodes.Br_S, evalForEachLabel);

        // foreach loop starts here.
        myFCIL.MarkLabel(topOfForEachLabel);

        // Load array of strings and index, store value at index for
 output.
        myFCIL.Emit(OpCodes.Ldloc_S, v3);
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldelem_Ref);
        myFCIL.Emit(OpCodes.Stloc_S, v2);

        myFCIL.Emit(OpCodes.Ldloc_S, v2);
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);

        // Increment counter by one.
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldc_I4_1);
        myFCIL.Emit(OpCodes.Add);
        myFCIL.Emit(OpCodes.Stloc_S, v1);

        // Determine if end of file list array has been reached.
        myFCIL.MarkLabel(evalForEachLabel);
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldloc_S, v3);
        myFCIL.Emit(OpCodes.Ldlen);
        myFCIL.Emit(OpCodes.Conv_I4);
        myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel);
        //foreach loop end here.

        myFCIL.Emit(OpCodes.Ldstr, "---");
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);
        myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in
 {1}.");
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Box, int.class.ToType());
        myFCIL.Emit(OpCodes.Ldloc_S, v0);
        myFCIL.EmitCall(OpCodes.Call, writeLine2ObjMI, null);

        myFCIL.Emit(OpCodes.Ret);

        Type myType = myTypeBuilder.CreateType();

        myAsmBuilder.SetEntryPoint(myFCMethod);
        myAsmBuilder.Save(executableName);
        Console.WriteLine("-- Method generated, type completed, "
            + "and assembly saved to disk.");

        return myType;
    } //CreateADynamicAssembly

    public static void main(String[]
 args)
    {
        String executableName = null;
        String domainDir;

        Console.Write("Enter a name for the file counting assembly:
 ");
        String executableNameNoExe = Console.ReadLine();
        executableName = executableNameNoExe + ".exe";
        Console.WriteLine("---");

        domainDir = Environment.get_CurrentDirectory();
        AppDomain curDomain = System.Threading.Thread.GetDomain();

        // Create a new AppDomain, with the current directory as the
 base.
        Console.WriteLine("Current Directory: {0}", 
            Environment.get_CurrentDirectory());
        AppDomainSetup mySetupInfo =  new AppDomainSetup();
        mySetupInfo.set_ApplicationBase(domainDir);
        mySetupInfo.set_ApplicationName(executableNameNoExe);
        mySetupInfo.set_LoaderOptimization(LoaderOptimization.SingleDomain);

        AppDomain myDomain = AppDomain.CreateDomain(executableNameNoExe, null,
 
            mySetupInfo);

        Console.WriteLine("Creating a new AppDomain '{0}'..."
, 
            executableNameNoExe);
        Console.WriteLine("-- Base Directory = '{0}'", myDomain.get_BaseDirectory());
        Console.WriteLine("-- Shadow Copy? = '{0}'", 
            (System.Boolean)myDomain.get_ShadowCopyFiles());
        Console.WriteLine("---");

        Type myFCType = CreateADynamicAssembly(curDomain, executableNameNoExe);
        Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
 
            myDomain.get_BaseDirectory().ToString());

        BindingFlags bFlags = BindingFlags.Public | BindingFlags.CreateInstance 
            | BindingFlags.Instance;

        Object myObjInstance = 
            myDomain.CreateInstanceAndUnwrap(executableNameNoExe, 
            executableNameNoExe, false, bFlags, null,
 null, null, null, null);

        Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...", 
            myObjInstance.ToString());

        myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 
            null, myObjInstance, new Object[]{});
   } //main
} //ADDyno 
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.CreateInstanceAndUnwrap メソッド (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)

指定した型の新しいインスタンスを作成します。パラメータには、型の名前、およびその検索方法と作成方法を指定します。

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

Public Function CreateInstanceAndUnwrap ( _
    assemblyName As String, _
    typeName As String, _
    ignoreCase As Boolean, _
    bindingAttr As BindingFlags, _
    binder As Binder, _
    args As Object(), _
    culture As CultureInfo, _
    activationAttributes As Object(), _
    securityAttributes As Evidence _
) As Object
Dim instance As AppDomain
Dim assemblyName As String
Dim typeName As String
Dim ignoreCase As Boolean
Dim bindingAttr As BindingFlags
Dim binder As Binder
Dim args As Object()
Dim culture As CultureInfo
Dim activationAttributes As Object()
Dim securityAttributes As Evidence
Dim returnValue As Object

returnValue = instance.CreateInstanceAndUnwrap(assemblyName, typeName, ignoreCase,
 bindingAttr, binder, args, culture, activationAttributes, securityAttributes)
public Object CreateInstanceAndUnwrap (
    string assemblyName,
    string typeName,
    bool ignoreCase,
    BindingFlags bindingAttr,
    Binder binder,
    Object[] args,
    CultureInfo culture,
    Object[] activationAttributes,
    Evidence securityAttributes
)
public:
Object^ CreateInstanceAndUnwrap (
    String^ assemblyName, 
    String^ typeName, 
    bool ignoreCase, 
    BindingFlags bindingAttr, 
    Binder^ binder, 
    array<Object^>^ args, 
    CultureInfo^ culture, 
    array<Object^>^ activationAttributes, 
    Evidence^ securityAttributes
)
public Object CreateInstanceAndUnwrap (
    String assemblyName, 
    String typeName, 
    boolean ignoreCase, 
    BindingFlags bindingAttr, 
    Binder binder, 
    Object[] args, 
    CultureInfo culture, 
    Object[] activationAttributes, 
    Evidence securityAttributes
)
public function CreateInstanceAndUnwrap (
    assemblyName : String, 
    typeName : String, 
    ignoreCase : boolean, 
    bindingAttr : BindingFlags, 
    binder : Binder, 
    args : Object[], 
    culture : CultureInfo, 
    activationAttributes : Object[], 
    securityAttributes : Evidence
) : Object

パラメータ

assemblyName

アセンブリの表示名。詳細については、Assembly.FullName のトピックを参照してください。

typeName

要求する型の完全修飾名。アセンブリは指定せずに、名前空間だけを指定します。この名前は、Type.FullName プロパティによって返されます。

ignoreCase

検索で大文字と小文字を区別するかどうかを指定する Boolean 値。

bindingAttr

typeName コンストラクタの検索に影響を与える 0 個以上のビット フラグの組み合わせ。bindingAttr が 0 の場合は、大文字と小文字を区別してパブリック コンストラクタを検索します。

binder

バインディング、引数型の強制変換、メンバの呼び出し、および、リフレクションを使用した MemberInfo オブジェクトの取得を有効にするオブジェクト。binder が null の場合は、既定のバインダが使用されます。

args

コンストラクタに渡される引数。この引数の配列は、呼び出すコンストラクタのパラメータに対して、数、順序、および型を一致させる必要があります。既定のコンストラクタを優先する場合は、args を空の配列または null にする必要があります。

culture

型の強制変換を制御するために使用するカルチャ固有のオブジェクト。culture が null 参照 (Visual Basic では Nothing) の場合は、現在のスレッドの CultureInfo が使用されます。

activationAttributes

アクティべーションに参加できる 1 つ以上の属性の配列。

securityAttributes

typeName の作成を承認するために使用される情報。

戻り値
typeName で指定したオブジェクトのインスタンス。

例外例外
例外の種類条件

ArgumentNullException

assemblyName または typeName が null 参照 (Visual Basic では Nothing) です。

MissingMethodException

一致するコンストラクタが見つかりませんでした。

TypeLoadException

assemblyName で、typename が見つかりませんでした。

FileNotFoundException

assemblyName は見つかりませんでした。

MethodAccessException

呼び出し元に、このコンストラクタを呼び出すためのアクセス許可がありません。

NotSupportedException

MarshalByRefObject から継承されていないオブジェクトに対して、呼び出し元がアクティベーション属性を与えることはできません。

AppDomainUnloadedException

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

BadImageFormatException

assemblyName が有効なアセンブリではありません。

FileLoadException

1 つのアセンブリまたはモジュールが 2 つの異なる証拠を使用して 2 回読み込まれました。

解説解説
使用例使用例

ignoreCase パラメータの使用方法を次の例に示します。

Imports System
Imports System.Reflection

Module Test

   Sub Main()
      InstantiateINT32(False)    ' Failed!
      InstantiateINT32(True)    ' OK!
   End Sub 'Main

   Sub InstantiateINT32(ignoreCase As Boolean)
      Try
         Dim currentDomain As AppDomain = AppDomain.CurrentDomain
         Dim instance As Object
 = currentDomain.CreateInstanceAndUnwrap( _
            "mscorlib", _
            "SYSTEM.INT32", _
            ignoreCase, _
            BindingFlags.Default, _
            Nothing, _
            Nothing, _
            Nothing, _
            Nothing, _
            Nothing  _
         )
         Console.WriteLine(instance.GetType())
      Catch e As TypeLoadException
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateINT32

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

class Test {

   static void Main() {
      InstantiateINT32(false);     // Failed!
      InstantiateINT32(true);      // OK!
   }
   
   static void InstantiateINT32(bool
 ignoreCase) {
      try {
         AppDomain currentDomain = AppDomain.CurrentDomain;
         object instance = currentDomain.CreateInstanceAndUnwrap(
            "mscorlib",
            "SYSTEM.INT32",
            ignoreCase,
            BindingFlags.Default,
            null,
            null,
            null,
            null,
            null
         );
         Console.WriteLine(instance.GetType());
      } catch (TypeLoadException e) {
         Console.WriteLine(e.Message);
      }
   }
}
using namespace System;
using namespace System::Reflection;
static void InstantiateINT32( bool
 ignoreCase )
{
   try
   {
      AppDomain^ currentDomain = AppDomain::CurrentDomain;
      Object^ instance = currentDomain->CreateInstanceAndUnwrap( "mscorlib",
 "SYSTEM.INT32", ignoreCase, BindingFlags::Default, nullptr, nullptr,
 nullptr, nullptr, nullptr );
      Console::WriteLine( instance->GetType() );
   }
   catch ( TypeLoadException^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

int main()
{
   InstantiateINT32( false ); // Failed!
   InstantiateINT32( true ); // OK!
}

import System.*;
import System.Reflection.*;

class Test
{
    public static void main(String[]
 args)
    {
        InstantiateInt32(false); // Failed!
        InstantiateInt32(true); // OK!
    } //main

    static void InstantiateInt32(boolean ignoreCase)
    {
        try {
            AppDomain currentDomain = AppDomain.get_CurrentDomain();
            Object instance = currentDomain.CreateInstanceAndUnwrap("mscorlib",
 
                "SYSTEM.INT32", ignoreCase, BindingFlags.Default, 
                null, null, null,
 null, null);
            Console.WriteLine(instance.GetType());
        }
        catch (TypeLoadException e) {
            Console.WriteLine(e.get_Message());
        }
    } //InstantiateInt32
} //Test
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.CreateInstanceAndUnwrap メソッド (String, String, Object[])

指定した型の新しいインスタンスを作成します。パラメータには、型が定義されているアセンブリの名前、型の名前、およびアクティベーション属性の配列を指定します。

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

Public Function CreateInstanceAndUnwrap ( _
    assemblyName As String, _
    typeName As String, _
    activationAttributes As Object() _
) As Object
Dim instance As AppDomain
Dim assemblyName As String
Dim typeName As String
Dim activationAttributes As Object()
Dim returnValue As Object

returnValue = instance.CreateInstanceAndUnwrap(assemblyName, typeName, activationAttributes)
public Object CreateInstanceAndUnwrap (
    string assemblyName,
    string typeName,
    Object[] activationAttributes
)
public:
Object^ CreateInstanceAndUnwrap (
    String^ assemblyName, 
    String^ typeName, 
    array<Object^>^ activationAttributes
)
public Object CreateInstanceAndUnwrap (
    String assemblyName, 
    String typeName, 
    Object[] activationAttributes
)
public function CreateInstanceAndUnwrap (
    assemblyName : String, 
    typeName : String, 
    activationAttributes : Object[]
) : Object

パラメータ

assemblyName

アセンブリの表示名。詳細については、Assembly.FullName のトピックを参照してください。

typeName

要求する型の完全修飾名。アセンブリは指定せずに、名前空間だけを指定します。この名前は、Type.FullName プロパティによって返されます。

activationAttributes

アクティべーションに参加できる 1 つ以上の属性を格納している配列。

戻り値
typeName で指定したオブジェクトのインスタンス。

例外例外
例外の種類条件

ArgumentNullException

assemblyName または typeName が null 参照 (Visual Basic では Nothing) です。

MissingMethodException

一致するパブリック コンストラクタが見つかりませんでした。

TypeLoadException

assemblyName で、typename が見つかりませんでした。

FileNotFoundException

assemblyName は見つかりませんでした。

MethodAccessException

呼び出し元に、このコンストラクタを呼び出すためのアクセス許可がありません。

NotSupportedException

MarshalByRefObject から継承されていないオブジェクトに対して、呼び出し元がアクティベーション属性を与えることはできません。

AppDomainUnloadedException

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

BadImageFormatException

assemblyName が有効なアセンブリではありません。

FileLoadException

1 つのアセンブリまたはモジュールが 2 つの異なる証拠を使用して 2 回読み込まれました。

解説解説
使用例使用例
Imports System
Imports System.IO
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Runtime.Remoting



Class ADDyno
   
   
   
   Public Shared Function
 CreateADynamicAssembly(ByRef myNewDomain As
 AppDomain, executableNameNoExe As String) As Type
      
      Dim executableName As String
 = executableNameNoExe + ".exe"
      
      Dim myAsmName As New
 AssemblyName()
      myAsmName.Name = executableNameNoExe
      myAsmName.CodeBase = Environment.CurrentDirectory
      
      Dim myAsmBuilder As AssemblyBuilder =
 myNewDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
      Console.WriteLine("-- Dynamic Assembly instantiated.")
      
      Dim myModBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule(executableNameNoExe,
 executableName)
      
      Dim myTypeBuilder As TypeBuilder = myModBuilder.DefineType(executableNameNoExe,
 TypeAttributes.Public, GetType(MarshalByRefObject))
      
      Dim myFCMethod As MethodBuilder = myTypeBuilder.DefineMethod("CountLocalFiles",
 MethodAttributes.Public Or MethodAttributes.Static, Nothing,
 New Type() {})
      
      Dim currentDirGetMI As MethodInfo = GetType(Environment).GetProperty("CurrentDirectory").GetGetMethod()
      Dim writeLine0objMI As MethodInfo = GetType(Console).GetMethod("WriteLine",
 New Type() {GetType(String)})
      Dim writeLine2objMI As MethodInfo = GetType(Console).GetMethod("WriteLine",
 New Type() {GetType(String), GetType(Object),
 GetType(Object)})
      Dim getFilesMI As MethodInfo = GetType(Directory).GetMethod("GetFiles",
 New Type() {GetType(String)})
      
      myFCMethod.InitLocals = True
      
      Dim myFCIL As ILGenerator = myFCMethod.GetILGenerator()
      
      Console.WriteLine("-- Generating MSIL method body...")
      Dim v0 As LocalBuilder = myFCIL.DeclareLocal(GetType(String))
      Dim v1 As LocalBuilder = myFCIL.DeclareLocal(GetType(Integer))
      Dim v2 As LocalBuilder = myFCIL.DeclareLocal(GetType(String))
      Dim v3 As LocalBuilder = myFCIL.DeclareLocal(GetType(String()))
      
      Dim evalForEachLabel As Label = myFCIL.DefineLabel()
      Dim topOfForEachLabel As Label = myFCIL.DefineLabel()
      
      ' Build the method body.
      myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, Nothing)
      myFCIL.Emit(OpCodes.Stloc_S, v0)
      myFCIL.Emit(OpCodes.Ldc_I4_0)
      myFCIL.Emit(OpCodes.Stloc_S, v1)
      myFCIL.Emit(OpCodes.Ldstr, "---")
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      myFCIL.Emit(OpCodes.Ldloc_S, v0)
      myFCIL.EmitCall(OpCodes.Call, getFilesMI, Nothing)
      myFCIL.Emit(OpCodes.Stloc_S, v3)
      
      myFCIL.Emit(OpCodes.Br_S, evalForEachLabel)
      
      ' foreach loop starts here.
      myFCIL.MarkLabel(topOfForEachLabel)
      
      ' Load array of strings and index, store value at index for output.
      myFCIL.Emit(OpCodes.Ldloc_S, v3)
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldelem_Ref)
      myFCIL.Emit(OpCodes.Stloc_S, v2)
      
      myFCIL.Emit(OpCodes.Ldloc_S, v2)
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      
      ' Increment counter by one.
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldc_I4_1)
      myFCIL.Emit(OpCodes.Add)
      myFCIL.Emit(OpCodes.Stloc_S, v1)
      
      ' Determine if end of file list array has been reached.
      myFCIL.MarkLabel(evalForEachLabel)
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Ldloc_S, v3)
      myFCIL.Emit(OpCodes.Ldlen)
      myFCIL.Emit(OpCodes.Conv_I4)
      myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel)
      'foreach loop end here.
      myFCIL.Emit(OpCodes.Ldstr, "---")
      myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, Nothing)
      myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in {1}.")
      myFCIL.Emit(OpCodes.Ldloc_S, v1)
      myFCIL.Emit(OpCodes.Box, GetType(Integer))
      myFCIL.Emit(OpCodes.Ldloc_S, v0)
      myFCIL.EmitCall(OpCodes.Call, writeLine2objMI, Nothing)
      
      myFCIL.Emit(OpCodes.Ret)
      
      Dim myType As Type = myTypeBuilder.CreateType()
      
      myAsmBuilder.SetEntryPoint(myFCMethod)
      myAsmBuilder.Save(executableName)
      Console.WriteLine("-- Method generated, type completed,
 and assembly saved to disk.")
      
      Return myType
   End Function 'CreateADynamicAssembly
    
   
   Public Shared Sub Main()
      
      Dim executableName As String
 = Nothing
      Dim domainDir As String
      
      Console.Write("Enter a name for the file counting assembly:
 ")
      Dim executableNameNoExe As String
 = Console.ReadLine()
      executableName = executableNameNoExe + ".exe"
      Console.WriteLine("---")
      
      domainDir = Environment.CurrentDirectory
      
      Dim curDomain As AppDomain = Thread.GetDomain()
      
      
      ' Create a new AppDomain, with the current directory as the base.
      Console.WriteLine("Current Directory: {0}",
 Environment.CurrentDirectory)
      Dim mySetupInfo As New
 AppDomainSetup()
      mySetupInfo.ApplicationBase = domainDir
      mySetupInfo.ApplicationName = executableNameNoExe
      mySetupInfo.LoaderOptimization = LoaderOptimization.SingleDomain
      
      Dim myDomain As AppDomain = AppDomain.CreateDomain(executableNameNoExe,
 Nothing, mySetupInfo)
      
      Console.WriteLine("Creating a new AppDomain '{0}'...",
 executableNameNoExe)
      
      Console.WriteLine("-- Base Directory = '{0}'", myDomain.BaseDirectory)
      Console.WriteLine("-- Shadow Copy? = '{0}'", myDomain.ShadowCopyFiles)
      
      Console.WriteLine("---")
      Dim myFCType As Type = CreateADynamicAssembly(curDomain,
 executableNameNoExe)
      
      Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
 myDomain.BaseDirectory.ToString())
      
      
      Dim bFlags As BindingFlags = BindingFlags.Public
 Or BindingFlags.CreateInstance Or BindingFlags.Instance
      
      Dim myObjInstance As [Object] = myDomain.CreateInstanceAndUnwrap(executableNameNoExe,
 executableNameNoExe, False, bFlags, Nothing,
 Nothing, Nothing, Nothing, Nothing)
      
      Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...", myObjInstance.ToString())
      
      myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 Nothing, myObjInstance, New Object()
 {})
   End Sub 'Main
End Class 'ADDyno 



using System;
using System.IO;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.Remoting;

class ADDyno

{

   public static Type CreateADynamicAssembly(ref
 AppDomain myNewDomain,
                         string executableNameNoExe)
   {

    string executableName = executableNameNoExe + ".exe";

    AssemblyName myAsmName = new AssemblyName();
    myAsmName.Name = executableNameNoExe;
    myAsmName.CodeBase = Environment.CurrentDirectory;

    AssemblyBuilder myAsmBuilder = myNewDomain.DefineDynamicAssembly(myAsmName,
                        AssemblyBuilderAccess.RunAndSave);
    Console.WriteLine("-- Dynamic Assembly instantiated.");

    ModuleBuilder myModBuilder = myAsmBuilder.DefineDynamicModule(executableNameNoExe
,
                                      executableName);

    TypeBuilder myTypeBuilder = myModBuilder.DefineType(executableNameNoExe,
                        TypeAttributes.Public,
                        typeof(MarshalByRefObject));

    MethodBuilder myFCMethod = myTypeBuilder.DefineMethod("CountLocalFiles"
,
                        MethodAttributes.Public |
                        MethodAttributes.Static,
                        null,
                        new Type[] {  });

    MethodInfo currentDirGetMI = typeof(Environment).GetProperty("CurrentDirectory").GetGetMethod();
    MethodInfo writeLine0objMI = typeof(Console).GetMethod("WriteLine"
,
                     new Type[] { typeof(string)
 });
    MethodInfo writeLine2objMI = typeof(Console).GetMethod("WriteLine"
,
                     new Type[] { typeof(string),
 typeof(object), typeof(object) });
    MethodInfo getFilesMI = typeof(Directory).GetMethod("GetFiles", 
                new Type[] { typeof(string)
 });

    myFCMethod.InitLocals = true;

    ILGenerator myFCIL = myFCMethod.GetILGenerator();

    Console.WriteLine("-- Generating MSIL method body...");
    LocalBuilder v0 = myFCIL.DeclareLocal(typeof(string));
    LocalBuilder v1 = myFCIL.DeclareLocal(typeof(int));
    LocalBuilder v2 = myFCIL.DeclareLocal(typeof(string));
    LocalBuilder v3 = myFCIL.DeclareLocal(typeof(string[]));

    Label evalForEachLabel = myFCIL.DefineLabel();
    Label topOfForEachLabel = myFCIL.DefineLabel();

    // Build the method body.

    myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, null);
    myFCIL.Emit(OpCodes.Stloc_S, v0);
    myFCIL.Emit(OpCodes.Ldc_I4_0);
    myFCIL.Emit(OpCodes.Stloc_S, v1);
    myFCIL.Emit(OpCodes.Ldstr, "---");
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);
    myFCIL.Emit(OpCodes.Ldloc_S, v0);
    myFCIL.EmitCall(OpCodes.Call, getFilesMI, null);
    myFCIL.Emit(OpCodes.Stloc_S, v3);

    myFCIL.Emit(OpCodes.Br_S, evalForEachLabel);

    // foreach loop starts here.
    myFCIL.MarkLabel(topOfForEachLabel);
    
        // Load array of strings and index, store value at index for
 output.
    myFCIL.Emit(OpCodes.Ldloc_S, v3);
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldelem_Ref);
    myFCIL.Emit(OpCodes.Stloc_S, v2);

    myFCIL.Emit(OpCodes.Ldloc_S, v2);
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);

    // Increment counter by one.
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldc_I4_1);
    myFCIL.Emit(OpCodes.Add);
    myFCIL.Emit(OpCodes.Stloc_S, v1);

    // Determine if end of file list array has been reached.
    myFCIL.MarkLabel(evalForEachLabel);
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Ldloc_S, v3);
    myFCIL.Emit(OpCodes.Ldlen);
    myFCIL.Emit(OpCodes.Conv_I4);
    myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel);
    //foreach loop end here.

    myFCIL.Emit(OpCodes.Ldstr, "---");
    myFCIL.EmitCall(OpCodes.Call, writeLine0objMI, null);
    myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in {1}.");
    myFCIL.Emit(OpCodes.Ldloc_S, v1);
    myFCIL.Emit(OpCodes.Box, typeof(int));
    myFCIL.Emit(OpCodes.Ldloc_S, v0);
    myFCIL.EmitCall(OpCodes.Call, writeLine2objMI, null);

    myFCIL.Emit(OpCodes.Ret);

    Type myType = myTypeBuilder.CreateType();

    myAsmBuilder.SetEntryPoint(myFCMethod);
    myAsmBuilder.Save(executableName);        
    Console.WriteLine("-- Method generated, type completed, and assembly saved
 to disk."); 

    return myType;

   }

   public static void Main()
 
   {

    string domainDir, executableName = null;
    
    Console.Write("Enter a name for the file counting assembly:
 ");
    string executableNameNoExe = Console.ReadLine();
    executableName = executableNameNoExe + ".exe";
    Console.WriteLine("---");

    domainDir = Environment.CurrentDirectory;

    AppDomain curDomain = Thread.GetDomain();    


    // Create a new AppDomain, with the current directory as the base.

    Console.WriteLine("Current Directory: {0}", Environment.CurrentDirectory);
    AppDomainSetup mySetupInfo = new AppDomainSetup();
    mySetupInfo.ApplicationBase = domainDir;
    mySetupInfo.ApplicationName = executableNameNoExe;
    mySetupInfo.LoaderOptimization = LoaderOptimization.SingleDomain;

    AppDomain myDomain = AppDomain.CreateDomain(executableNameNoExe,
                    null, mySetupInfo);

    Console.WriteLine("Creating a new AppDomain '{0}'..."
,
                    executableNameNoExe);

    Console.WriteLine("-- Base Directory = '{0}'", myDomain.BaseDirectory);
 
    Console.WriteLine("-- Shadow Copy? = '{0}'", myDomain.ShadowCopyFiles);
 

    Console.WriteLine("---");
    Type myFCType = CreateADynamicAssembly(ref curDomain, 
                     executableNameNoExe);

    Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
              myDomain.BaseDirectory.ToString());


    BindingFlags bFlags = (BindingFlags.Public | BindingFlags.CreateInstance |
                   BindingFlags.Instance);

    Object myObjInstance = myDomain.CreateInstanceAndUnwrap(executableNameNoExe,
                executableNameNoExe, false, bFlags, 
                null, null, null,
 null, null);

    Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...",
               myObjInstance.ToString());

    myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 null,
                myObjInstance, new object[] { });
            
        
   }

}

using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Runtime::Remoting;

ref class ADDyno
{
public:
   static Type^ CreateADynamicAssembly( interior_ptr<AppDomain^>
 myNewDomain, String^ executableNameNoExe )
   {
      String^ executableName = String::Concat( executableNameNoExe, ".exe"
 );
      AssemblyName^ myAsmName = gcnew AssemblyName;
      myAsmName->Name = executableNameNoExe;
      myAsmName->CodeBase = Environment::CurrentDirectory;
      AssemblyBuilder^ myAsmBuilder = ( *myNewDomain)->DefineDynamicAssembly(
 myAsmName, AssemblyBuilderAccess::RunAndSave );
      Console::WriteLine( "-- Dynamic Assembly instantiated." );
      ModuleBuilder^ myModBuilder = myAsmBuilder->DefineDynamicModule( executableNameNoExe,
 executableName );
      TypeBuilder^ myTypeBuilder = myModBuilder->DefineType( executableNameNoExe,
 TypeAttributes::Public, MarshalByRefObject::typeid );
      array<Type^>^temp0 = nullptr;
      MethodBuilder^ myFCMethod = myTypeBuilder->DefineMethod( "CountLocalFiles",
 static_cast<MethodAttributes>(MethodAttributes::Public | MethodAttributes::Static),
 nullptr, temp0 );
      MethodInfo^ currentDirGetMI = Environment::typeid->GetProperty( "CurrentDirectory"
 )->GetGetMethod();
      array<Type^>^temp1 = {String::typeid};
      MethodInfo^ writeLine0objMI = Console::typeid->GetMethod( "WriteLine",
 temp1 );
      array<Type^>^temp2 = {String::typeid,Object::typeid,Object::typeid};
      MethodInfo^ writeLine2objMI = Console::typeid->GetMethod( "WriteLine",
 temp2 );
      array<Type^>^temp3 = {String::typeid};
      MethodInfo^ getFilesMI = Directory::typeid->GetMethod( "GetFiles",
 temp3 );
      myFCMethod->InitLocals = true;
      ILGenerator^ myFCIL = myFCMethod->GetILGenerator();
      Console::WriteLine( "-- Generating MSIL method body..." );
      LocalBuilder^ v0 = myFCIL->DeclareLocal( String::typeid );
      LocalBuilder^ v1 = myFCIL->DeclareLocal( int::typeid
 );
      LocalBuilder^ v2 = myFCIL->DeclareLocal( String::typeid );
      LocalBuilder^ v3 = myFCIL->DeclareLocal( array<String^>::typeid );
      Label evalForEachLabel = myFCIL->DefineLabel();
      Label topOfForEachLabel = myFCIL->DefineLabel();

      // Build the method body.
      myFCIL->EmitCall( OpCodes::Call, currentDirGetMI, nullptr );
      myFCIL->Emit( OpCodes::Stloc_S, v0 );
      myFCIL->Emit( OpCodes::Ldc_I4_0 );
      myFCIL->Emit( OpCodes::Stloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldstr, "---" );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );
      myFCIL->Emit( OpCodes::Ldloc_S, v0 );
      myFCIL->EmitCall( OpCodes::Call, getFilesMI, nullptr );
      myFCIL->Emit( OpCodes::Stloc_S, v3 );
      myFCIL->Emit( OpCodes::Br_S, evalForEachLabel );

      // foreach loop starts here.
      myFCIL->MarkLabel( topOfForEachLabel );

      // Load array of strings and index, store value at index for output.
      myFCIL->Emit( OpCodes::Ldloc_S, v3 );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldelem_Ref );
      myFCIL->Emit( OpCodes::Stloc_S, v2 );
      myFCIL->Emit( OpCodes::Ldloc_S, v2 );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );

      // Increment counter by one.
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldc_I4_1 );
      myFCIL->Emit( OpCodes::Add );
      myFCIL->Emit( OpCodes::Stloc_S, v1 );

      // Determine if end of file list array has been reached.
      myFCIL->MarkLabel( evalForEachLabel );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Ldloc_S, v3 );
      myFCIL->Emit( OpCodes::Ldlen );
      myFCIL->Emit( OpCodes::Conv_I4 );
      myFCIL->Emit( OpCodes::Blt_S, topOfForEachLabel );

      //foreach loop end here.
      myFCIL->Emit( OpCodes::Ldstr, "---" );
      myFCIL->EmitCall( OpCodes::Call, writeLine0objMI, nullptr );
      myFCIL->Emit( OpCodes::Ldstr, "There are {0} files in
 {1}." );
      myFCIL->Emit( OpCodes::Ldloc_S, v1 );
      myFCIL->Emit( OpCodes::Box, int::typeid );
      myFCIL->Emit( OpCodes::Ldloc_S, v0 );
      myFCIL->EmitCall( OpCodes::Call, writeLine2objMI, nullptr );
      myFCIL->Emit( OpCodes::Ret );
      Type^ myType = myTypeBuilder->CreateType();
      myAsmBuilder->SetEntryPoint( myFCMethod );
      myAsmBuilder->Save( executableName );
      Console::WriteLine( "-- Method generated, type completed, and assembly
 saved to disk." );
      return myType;
   }
};

int main()
{
   String^ domainDir;
   String^ executableName = nullptr;
   Console::Write( "Enter a name for the file counting assembly:
 " );
   String^ executableNameNoExe = Console::ReadLine();
   executableName = String::Concat( executableNameNoExe, ".exe" );
   Console::WriteLine( "---" );
   domainDir = Environment::CurrentDirectory;
   AppDomain^ curDomain = Thread::GetDomain();

   // Create a new AppDomain, with the current directory as the base.
   Console::WriteLine( "Current Directory: {0}", Environment::CurrentDirectory
 );
   AppDomainSetup^ mySetupInfo = gcnew AppDomainSetup;
   mySetupInfo->ApplicationBase = domainDir;
   mySetupInfo->ApplicationName = executableNameNoExe;
   mySetupInfo->LoaderOptimization = LoaderOptimization::SingleDomain;
   AppDomain^ myDomain = AppDomain::CreateDomain( executableNameNoExe, nullptr, mySetupInfo
 );
   Console::WriteLine( "Creating a new AppDomain '{0}'...",
 executableNameNoExe );
   Console::WriteLine( "-- Base Directory = '{0}'", myDomain->BaseDirectory
 );
   Console::WriteLine( "-- Shadow Copy? = '{0}'", myDomain->ShadowCopyFiles
 );
   Console::WriteLine( "---" );
   Type^ myFCType = ADDyno::CreateADynamicAssembly(  &curDomain, executableNameNoExe
 );
   Console::WriteLine( "Loading '{0}' from '{1}'...", executableName, myDomain->BaseDirectory
 );
   BindingFlags bFlags = static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::CreateInstance
 | BindingFlags::Instance);
   Object^ myObjInstance = myDomain->CreateInstanceAndUnwrap( executableNameNoExe,
 executableNameNoExe, false, bFlags, nullptr, nullptr, nullptr,
 nullptr, nullptr );
   Console::WriteLine( "Executing method 'CountLocalFiles' in
 {0}...", myObjInstance );
   array<Object^>^temp4 = nullptr;
   myFCType->InvokeMember( "CountLocalFiles", BindingFlags::InvokeMethod,
 nullptr, myObjInstance, temp4 );
}
import System.*;
import System.IO.*;
import System.Threading.*;
import System.Reflection.*;
import System.Reflection.Emit.*;
import System.Runtime.Remoting.*;

class ADDyno
{
    public static Type CreateADynamicAssembly(AppDomain
 myNewDomain, 
        String executableNameNoExe) 
    {
        String executableName = executableNameNoExe + ".exe";
        AssemblyName myAsmName =  new AssemblyName();
        myAsmName.set_Name(executableNameNoExe);
        myAsmName.set_CodeBase(Environment.get_CurrentDirectory());

        AssemblyBuilder myAsmBuilder = 
            myNewDomain.DefineDynamicAssembly(myAsmName, 
            AssemblyBuilderAccess.RunAndSave);
        Console.WriteLine("-- Dynamic Assembly instantiated.");

        ModuleBuilder myModBuilder = 
            myAsmBuilder.DefineDynamicModule(executableNameNoExe, 
            executableName);

        TypeBuilder myTypeBuilder = myModBuilder.DefineType(executableNameNoExe,
            TypeAttributes.Public, MarshalByRefObject.class.ToType());

        MethodBuilder myFCMethod = myTypeBuilder.DefineMethod("CountLocalFiles"
, 
            MethodAttributes.Public | MethodAttributes.Static, null,
 
            new Type[]{});

        MethodInfo currentDirGetMI = Environment.class.ToType().
            GetProperty("CurrentDirectory").GetGetMethod();
        MethodInfo writeLine0ObjMI = Console.class.ToType().
            GetMethod("WriteLine", new Type[]{String.class.ToType()});
        MethodInfo writeLine2ObjMI = Console.class.ToType().
            GetMethod("WriteLine", new Type[]{String.class.ToType(),
 
            Object.class.ToType(), Object.class.ToType()});
        MethodInfo getFilesMI = Directory.class.ToType().GetMethod("GetFiles",
 
            new Type[]{String.class.ToType()});

        myFCMethod.set_InitLocals(true);
        ILGenerator myFCIL = myFCMethod.GetILGenerator();

        Console.WriteLine("-- Generating MSIL method body...");
        LocalBuilder v0 = myFCIL.DeclareLocal(String.class.ToType());
        LocalBuilder v1 = myFCIL.DeclareLocal(int.class.ToType());
        LocalBuilder v2 = myFCIL.DeclareLocal(String.class.ToType());
        LocalBuilder v3 = myFCIL.DeclareLocal(String[].class.ToType());

        Label evalForEachLabel = myFCIL.DefineLabel();
        Label topOfForEachLabel = myFCIL.DefineLabel();

        // Build the method body.
        myFCIL.EmitCall(OpCodes.Call, currentDirGetMI, null);
        myFCIL.Emit(OpCodes.Stloc_S, v0);
        myFCIL.Emit(OpCodes.Ldc_I4_0);
        myFCIL.Emit(OpCodes.Stloc_S, v1);
        myFCIL.Emit(OpCodes.Ldstr, "---");
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);
        myFCIL.Emit(OpCodes.Ldloc_S, v0);
        myFCIL.EmitCall(OpCodes.Call, getFilesMI, null);
        myFCIL.Emit(OpCodes.Stloc_S, v3);

        myFCIL.Emit(OpCodes.Br_S, evalForEachLabel);

        // foreach loop starts here.
        myFCIL.MarkLabel(topOfForEachLabel);

        // Load array of strings and index, store value at index for
 output.
        myFCIL.Emit(OpCodes.Ldloc_S, v3);
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldelem_Ref);
        myFCIL.Emit(OpCodes.Stloc_S, v2);

        myFCIL.Emit(OpCodes.Ldloc_S, v2);
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);

        // Increment counter by one.
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldc_I4_1);
        myFCIL.Emit(OpCodes.Add);
        myFCIL.Emit(OpCodes.Stloc_S, v1);

        // Determine if end of file list array has been reached.
        myFCIL.MarkLabel(evalForEachLabel);
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Ldloc_S, v3);
        myFCIL.Emit(OpCodes.Ldlen);
        myFCIL.Emit(OpCodes.Conv_I4);
        myFCIL.Emit(OpCodes.Blt_S, topOfForEachLabel);
        //foreach loop end here.

        myFCIL.Emit(OpCodes.Ldstr, "---");
        myFCIL.EmitCall(OpCodes.Call, writeLine0ObjMI, null);
        myFCIL.Emit(OpCodes.Ldstr, "There are {0} files in
 {1}.");
        myFCIL.Emit(OpCodes.Ldloc_S, v1);
        myFCIL.Emit(OpCodes.Box, int.class.ToType());
        myFCIL.Emit(OpCodes.Ldloc_S, v0);
        myFCIL.EmitCall(OpCodes.Call, writeLine2ObjMI, null);

        myFCIL.Emit(OpCodes.Ret);

        Type myType = myTypeBuilder.CreateType();

        myAsmBuilder.SetEntryPoint(myFCMethod);
        myAsmBuilder.Save(executableName);
        Console.WriteLine("-- Method generated, type completed, "
            + "and assembly saved to disk.");

        return myType;
    } //CreateADynamicAssembly

    public static void main(String[]
 args)
    {
        String executableName = null;
        String domainDir;

        Console.Write("Enter a name for the file counting assembly:
 ");
        String executableNameNoExe = Console.ReadLine();
        executableName = executableNameNoExe + ".exe";
        Console.WriteLine("---");

        domainDir = Environment.get_CurrentDirectory();
        AppDomain curDomain = System.Threading.Thread.GetDomain();

        // Create a new AppDomain, with the current directory as the
 base.
        Console.WriteLine("Current Directory: {0}", 
            Environment.get_CurrentDirectory());
        AppDomainSetup mySetupInfo =  new AppDomainSetup();
        mySetupInfo.set_ApplicationBase(domainDir);
        mySetupInfo.set_ApplicationName(executableNameNoExe);
        mySetupInfo.set_LoaderOptimization(LoaderOptimization.SingleDomain);

        AppDomain myDomain = AppDomain.CreateDomain(executableNameNoExe, null,
 
            mySetupInfo);

        Console.WriteLine("Creating a new AppDomain '{0}'..."
, 
            executableNameNoExe);
        Console.WriteLine("-- Base Directory = '{0}'", myDomain.get_BaseDirectory());
        Console.WriteLine("-- Shadow Copy? = '{0}'", 
            (System.Boolean)myDomain.get_ShadowCopyFiles());
        Console.WriteLine("---");

        Type myFCType = CreateADynamicAssembly(curDomain, executableNameNoExe);
        Console.WriteLine("Loading '{0}' from '{1}'...", executableName,
 
            myDomain.get_BaseDirectory().ToString());

        BindingFlags bFlags = BindingFlags.Public | BindingFlags.CreateInstance 
            | BindingFlags.Instance;

        Object myObjInstance = 
            myDomain.CreateInstanceAndUnwrap(executableNameNoExe, 
            executableNameNoExe, false, bFlags, null,
 null, null, null, null);

        Console.WriteLine("Executing method 'CountLocalFiles' in
 {0}...", 
            myObjInstance.ToString());

        myFCType.InvokeMember("CountLocalFiles", BindingFlags.InvokeMethod,
 
            null, myObjInstance, new Object[]{});
   } //main
} //ADDyno 
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.CreateInstanceAndUnwrap メソッド

指定した型の新しいインスタンスを作成します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
AppDomain.CreateInstanceAndUnwrap (String, String) 指定した型の新しいインスタンスを作成します。パラメータには、型が定義されているアセンブリの名前と型の名前を指定します。
AppDomain.CreateInstanceAndUnwrap (String, String, Object[]) 指定した型の新しいインスタンスを作成します。パラメータには、型が定義されているアセンブリの名前、型の名前、およびアクティベーション属性の配列を指定します。
AppDomain.CreateInstanceAndUnwrap (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 指定した型の新しいインスタンスを作成します。パラメータには、型の名前、およびその検索方法と作成方法を指定します。
参照参照



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

「AppDomain.CreateInstanceAndUnwrap」の関連用語

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

   

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



AppDomain.CreateInstanceAndUnwrapのページの著作権

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

©2026 GRAS Group, Inc.RSS