Exportieren (0) Drucken
Alle erweitern

Assembly-Klasse

Aktualisiert: November 2007

Stellt eine Assembly dar, die ein wiederverwendbarer, in verschiedenen Versionen einsetzbarer und selbstbeschreibender Baustein einer Anwendung der Common Language Runtime (CLR) ist.

Namespace:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public class Assembly : _Assembly, IEvidenceFactory, 
	ICustomAttributeProvider, ISerializable
/** @attribute SerializableAttribute */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */
/** @attribute ComVisibleAttribute(true) */
public class Assembly implements _Assembly, 
	IEvidenceFactory, ICustomAttributeProvider, ISerializable
public class Assembly implements _Assembly, IEvidenceFactory, ICustomAttributeProvider, ISerializable

Verwenden Sie die Assembly-Klasse zum Laden von Assemblys, zum Untersuchen der Metadaten und der Bestandteile von Assemblys, zum Ermitteln der in Assemblys enthaltenen Typen und zum Erstellen von Instanzen von solchen Typen.

Verwenden Sie zum Abrufen eines Arrays von Assembly-Objekten, die die derzeit in einer Anwendungsdomäne (beispielsweise die Standardanwendungsdomäne eines einfachen Projekts) geladenen Assemblys darstellt, die AppDomain.GetAssemblies-Methode.

Zum dynamischen Laden von Assemblys stellt die Assembly-Klasse die folgenden statischen Methoden (Shared-Methoden in Visual Basic) bereit. Assemblys werden bei Auftreten des Ladevorgangs in die Anwendungsdomäne geladen.

  • Es wird empfohlen, beim Laden von Assemblys die Load-Methode zu verwenden, die die zu ladende Assembly mit ihrem Anzeigenamen angibt (beispielsweise "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"). Bei der Suche nach der Assembly werden die in So sucht Common Language Runtime nach Assemblys beschriebenen Regeln befolgt.

  • Die ReflectionOnlyLoad-Methode und ReflectionOnlyLoadFrom-Methode ermöglichen Ihnen das Laden einer Assembly für die Reflektion, jedoch nicht für die Ausführung. Eine Assembly, die für eine 64-Bit-Plattform konzipiert ist, kann beispielsweise von Code untersucht werden, der auf einer 32-Bit-Plattform ausgeführt wird.

  • Die LoadFile-Methode und die LoadFrom-Methode werden für die seltenen Szenarios bereitgestellt, in denen eine Assembly anhand ihres Pfads angegeben werden muss.

Verwenden Sie zum Abrufen eines Assembly-Objekts für die derzeit ausgeführte Assembly die GetExecutingAssembly-Methode.

Viele Member der Assembly-Klasse stellen Informationen zu einer Assembly bereit. Beispiel:

  • Die GetName-Methode gibt ein AssemblyName-Objekt zurück, die Zugriff auf die Teile des Anzeigenamens der Assembly bietet.

  • Die GetCustomAttributes-Methode listet die auf die Assembly angewendeten Attribute auf.

  • Die GetFiles-Methode bietet Zugriff auf die Dateien im Assemblymanifest.

  • Die GetManifestResourceNames-Methode stellt die Namen der Ressourcen im Assemblymanifest bereit.

Die GetTypes-Methode listet alle Typen in der Assembly auf. Die GetExportedTypes-Methode listet die Typen auf, die für Aufrufer außerhalb der Assembly sichtbar sind. Mit der GetType-Methode kann nach einem bestimmten Typ in der Assembly gesucht werden. Mit der CreateInstance-Methode kann nach Instanzen von Typen in der Assembly gesucht werden, zudem können damit Instanzen von Typen in der Assembly erstellt werden.

Weitere Informationen zu Assemblys finden Sie unter Anwendungsdomänen und Assemblys.

Im folgenden Codebeispiel wird veranschaulicht, wie die derzeit ausgeführte Assembly abgerufen, wie eine Instanz eines Typs in der betreffenden Assembly erstellt und wie eine der Methoden des Typs mit später Bindung aufgerufen wird. Zu diesem Zweck wird im Codebeispiel eine Klasse mit dem Namen Example mit einer Methode mit dem Namen SampleMethod definiert. Der Konstruktor der Klasse akzeptiert eine ganze Zahl, mit der der Rückgabewert der Methode berechnet wird.

Außerdem wird veranschaulicht, wie mit der GetName-Methode ein AssemblyName-Objekt abgerufen wird, mit dem der vollständige Name der Assembly analysiert werden kann. Im Beispiel werden die Versionsnummer der Assembly, die CodeBase-Eigenschaft und die EntryPoint-Eigenschaft angezeigt.

using System;
using System.Reflection;
using System.Security.Permissions;

[assembly:AssemblyVersionAttribute("1.0.2000.0")]

public class Example
{
    private int factor;
    public Example(int f)
    {
        factor = f;
    }

    public int SampleMethod(int x) 
    { 
        Console.WriteLine("\nExample.SampleMethod({0}) executes.", x);
        return x * factor;
    }

    public static void Main()
    {
        Assembly assem = Assembly.GetExecutingAssembly();

        Console.WriteLine("Assembly Full Name:");
        Console.WriteLine(assem.FullName);

        // The AssemblyName type can be used to parse the full name.
        AssemblyName assemName = assem.GetName();
        Console.WriteLine("\nName: {0}", assemName.Name);
        Console.WriteLine("Version: {0}.{1}", 
            assemName.Version.Major, assemName.Version.Minor);

        Console.WriteLine("\nAssembly CodeBase:");
        Console.WriteLine(assem.CodeBase);

        // Create an object from the assembly, passing in the correct number
        // and type of arguments for the constructor.
        Object o = assem.CreateInstance("Example", false, 
            BindingFlags.ExactBinding, 
            null, new Object[] { 2 }, null, null);

        // Make a late-bound call to an instance method of the object.    
        MethodInfo m = assem.GetType("Example").GetMethod("SampleMethod");
        Object ret = m.Invoke(o, new Object[] { 42 });
        Console.WriteLine("SampleMethod returned {0}.", ret);

        Console.WriteLine("\nAssembly entry point:");
        Console.WriteLine(assem.EntryPoint);
    }
}

/* This code example produces output similar to the following:

Assembly Full Name:
source, Version=1.0.2000.0, Culture=neutral, PublicKeyToken=null

Name: source
Version: 1.0

Assembly CodeBase:
file:///C:/sdtree/AssemblyClass/cs/source.exe

Example.SampleMethod(42) executes.
SampleMethod returned 84.

Assembly entry point:
Void Main()
 */


Dieser Typ ist threadsicher.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0

XNA Framework

Unterstützt in: 2.0, 1.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft