import-Anweisung
Aktualisiert: November 2007
Ermöglicht den Zugriff auf einen Namespace, der entweder im aktuellen Skript oder in einer externen Bibliothek enthalten ist.
import namespace
Argumente
- namespace
Erforderlich. Der Name des zu importierenden Namespace.
Hinweise
Die import-Anweisung erstellt eine Eigenschaft für das globale Objekt, wobei der Name als namespace angegeben wird, und initialisiert sie so, dass sie das dem importierten Namespace entsprechende Objekt enthält. Eigenschaften, die mithilfe der import-Anweisung erstellt werden, kann nichts zugewiesen werden, und sie können nicht gelöscht oder aufgelistet werden. Alle import-Anweisungen werden beim Start eines Skripts ausgeführt.
Für das Skript wird durch die import-Anweisung ein Namespace verfügbar. Der Namespace kann im Skript mithilfe der package-Anweisung definiert werden, oder er kann durch eine externe Assembly bereitgestellt werden. Wenn der Namespace im Skript nicht zu finden ist, sucht JScript nach einer Assembly, die mit dem Namen des Namespaces in den angegebenen Assemblyverzeichnissen übereinstimmt, vorausgesetzt, das Programm wird nicht kompiliert und die /autoref-Option ist aktiviert. Wenn Sie z. B den Namespace Acme.Widget.Sprocket importieren, der Namespace im aktuellen Skript jedoch nicht definiert ist, sucht JScript in den folgenden Assemblys nach dem Namespace:
Acme.Widget.Sprocket.dll
Acme.Widget.dll
Acme.dll
Sie können den Namen der aufzunehmenden Assembly explizit angeben. Das ist erforderlich, wenn die /autoref-Option deaktiviert ist oder wenn der Name des Namespaces nicht mit dem Assemblynamen übereinstimmt. Der Befehlszeilencompiler gibt den Assemblynamen mithilfe der /reference-Option an, während ASP.NET für diesen Zweck die @ Import-Direktive und die @ Assembly-Direktive verwendet. Wenn Sie z. B. explizit die Assembly mydll.dll einschließen möchten, geben Sie in der Befehlszeile Folgendes ein:
jsc /reference:mydll.dll myprogram.js
Wenn Sie die Assembly von einer ASP.NET-Seite aus einschließen möchten, verwenden Sie folgenden Ausdruck:
<%@ Import namespace = "mydll" %>
<%@ Assembly name = "mydll" %>
Wenn im Code auf eine Klasse verwiesen wird, sucht der Compiler zunächst im lokalen Gültigkeitsbereich nach der Klasse. Wenn der Compiler keine entsprechende Klasse findet, sucht er in jedem Namespace danach, und zwar in der Reihenfolge, in der sie importiert wurden, und er hält an, wenn er eine Übereinstimmung findet. Wenn Sie den voll gekennzeichneten Namen der Klasse verwenden, können Sie überprüfen, von welchem Namespace die Klasse abgeleitet ist.
Geschachtelte Namespaces werden von JScript nicht automatisch importiert. Jeder Namespace muss unter Verwendung des voll gekennzeichneten Namespacenamens importiert werden. Wenn z. B. auf Klassen aus einem Namespace mit dem Namen Outer und aus einem geschachtelten Namespace mit dem Namen Outer.Inner zugegriffen werden soll, müssen beide Namespaces importiert werden.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie drei einfache Pakete definiert werden und die Namespaces in das Skript importiert werden. Im Regelfall befindet sich jedes Paket in einer separaten Assembly, sodass das Verwalten und Verteilen des Paketinhalts möglich ist.
// Create a simple package containing a class with a single field (Hello).
package Deutschland {
class Greeting {
static var Hello : String = "Guten tag!";
}
};
// Create another simple package containing two classes.
// The class Greeting has the field Hello.
// The class Units has the field distance.
package France {
public class Greeting {
static var Hello : String = "Bonjour!";
}
public class Units {
static var distance : String = "meter";
}
};
// Use another package for more specific information.
package France.Paris {
public class Landmark {
static var Tower : String = "Eiffel Tower";
}
};
// Declare a local class that shadows the imported classes.
class Greeting {
static var Hello : String = "Greetings!";
}
// Import the Deutschland, France, and France.Paris packages.
import Deutschland;
import France;
import France.Paris;
// Access the package members with fully qualified names.
print(Greeting.Hello);
print(France.Greeting.Hello);
print(Deutschland.Greeting.Hello);
print(France.Paris.Landmark.Tower);
// The Units class is not shadowed, so it can be accessed with or without a fully qualified name.
print(Units.distance);
print(France.Units.distance);
Ausgabe dieses Skripts:
Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter