Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Metoda AppDomain.Load (Byte[], Byte[])

.NET Framework (current version)
 

Zatížení Assembly s běžné souboru objektu formátu (COFF) na základě bitové kopie obsahující vygenerovanou Assembly. Hrubý bajtů reprezentující symboly pro Assembly jsou načteny.

Obor názvů:   System
Sestavení:  mscorlib (v mscorlib.dll)

public Assembly Load(
	byte[] rawAssembly,
	byte[] rawSymbolStore
)

Parametry

rawAssembly
Type: System.Byte[]

Pole typu byte který je na základě COFF bitové kopie obsahující vygenerovanou sestavení.

rawSymbolStore
Type: System.Byte[]

Pole typu byte obsahující nezpracované bajtů reprezentující symboly pro sestavení.

Návratová hodnota

Type: System.Reflection.Assembly

Načtení sestavení.

Exception Condition
ArgumentNullException

rawAssembly je null.

BadImageFormatException

rawAssembly není platné sestavení.

- nebo -

Aktuálně je zaveden verze 2.0 nebo novější common language runtime a rawAssembly byl kompilován s novější verzí.

AppDomainUnloadedException

Dojde k pokusu o operaci na uvolněné doméně aplikace.

FileLoadException

Sestavení nebo modul byly zavedeny dvakrát se dvěma různými legitimacemi.

Počínaje verzí .NET Framework 4, úroveň důvěryhodnosti sestavení, který je načten pomocí této metody je stejná jako úroveň důvěryhodnosti domény aplikace.

Tato metoda by měla sloužit pouze k načtení sestavení do aktuální domény aplikace. Tato metoda je poskytována pro pohodlí volajících používající interoperabilitu, kteří nemohou volat statickou Assembly.Load Metoda. K načtení sestavení do jiných domén aplikace, použijte metodu CreateInstanceAndUnwrap.

Informace, které jsou společná pro všechny přetížení této metody naleznete v tématu Load(AssemblyName) přetížení metody.

Následující příklad ukazuje použití načítání nezpracovaných sestavení.

Pro spuštění této ukázky kódu je nutné zadat plně kvalifikovaný název. Informace o tom, jak získat plně kvalifikovaný název naleznete v tématu Názvy sestavení.

using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;

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

      InstantiateMyType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver);

      InstantiateMyType(currentDomain);   // OK!
   }

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

   // Loads the content of a file to a byte array. 
   static byte[] loadFile(string filename) {
      FileStream fs = new FileStream(filename, FileMode.Open);
      byte[] buffer = new byte[(int) fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      fs.Close();

      return buffer;
   }   

   static Assembly MyResolver(object sender, ResolveEventArgs args) {
      AppDomain domain = (AppDomain) sender;

      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly(domain);

      byte[] rawAssembly = loadFile("temp.dll");
      byte[] rawSymbolStore = loadFile("temp.pdb");
      Assembly assembly = domain.Load(rawAssembly, rawSymbolStore);

      return assembly;
   }

   // Creates a dynamic assembly with symbol information
   // and saves them to temp.dll and temp.pdb
   static void EmitAssembly(AppDomain domain) {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule", "temp.dll", true);
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public);

      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      ilGenerator.EmitWriteLine("MyType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      assemblyBuilder.Save("temp.dll");
   }
}

WebPermission

for reading a URI that does not begin with "file://".

FileIOPermission

for access to read from a file or directory, and for access to the information in the path itself. Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.Read, F:System.Security.Permissions.FileIOPermissionAccess.PathDiscovery.

.NET Framework
K dispozici od 1.1
Zpět na začátek
Zobrazit: