Computerwissenschaften

Verwenden von Namespaces in VB.NET

Die gebräuchlichste Art, wie VB.NET-Namespaces von den meisten Programmierern verwendet werden, besteht darin, dem Compiler mitzuteilen, welche .NET Framework-Bibliotheken für ein bestimmtes Programm benötigt werden. Wenn Sie eine „Vorlage“ für Ihr Projekt auswählen (z. B. „Windows Forms-Anwendung“), wählen Sie unter anderem die spezifischen Namespaces aus, auf die in Ihrem Projekt automatisch verwiesen wird. Dadurch wird der Code in diesen Namespaces Ihrem Programm zur Verfügung gestellt.

Einige der Namespaces und die tatsächlichen Dateien, in denen sie sich für eine Windows Forms-Anwendung befinden, sind beispielsweise:

System> in System.dll
System.Data> in System.Data.dll
System.Deployment> System.Deployment.dll
System.Drawing> System.Drawing.dll
System.Windows.Forms> System.Windows.Forms.dll

Sie können die Namespaces und Referenzen für Ihr Projekt in den Projekteigenschaften auf der Registerkarte Referenzen anzeigen (und ändern) .

Diese Art, über Namespaces nachzudenken, lässt sie genauso aussehen wie „Codebibliothek“, aber das ist nur ein Teil der Idee. Der eigentliche Vorteil von Namespaces liegt in der Organisation.

Die meisten von uns haben nicht die Möglichkeit, eine neue Namespace-Hierarchie einzurichten, da dies für eine große und komplizierte Codebibliothek im Allgemeinen nur einmal „am Anfang“ erfolgt. Hier erfahren Sie jedoch, wie Sie die Namespaces interpretieren, die Sie in vielen Organisationen verwenden sollen.

 

Was Namespaces tun

Mit Namespaces können Zehntausende von .NET Framework-Objekten und alle Objekte, die VB-Programmierer in Projekten erstellen, organisiert werden, damit sie nicht in Konflikt geraten.

Wenn Sie beispielsweise in .NET nach einem Farbobjekt suchen , finden Sie zwei. In beiden gibt es ein Farbobjekt :

System.Drawing 
System.Windows.Media

Wenn Sie eine Imports- Anweisung für beide Namespaces hinzufügen (möglicherweise ist auch eine Referenz für die Projekteigenschaften erforderlich) …

Importiert System.Drawing 
Importiert System.Windows.Media

… dann eine Aussage wie …

Dim a As Farbe

… wird als Fehler mit dem Hinweis „Farbe ist mehrdeutig“ gekennzeichnet, und .NET weist darauf hin, dass beide Namespaces ein Objekt mit diesem Namen enthalten. Diese Art von Fehler wird als „Namenskollision“ bezeichnet.

Dies ist der wahre Grund für „Namespaces“ und auch die Art und Weise, wie Namespaces in anderen Technologien (wie XML) verwendet werden. Namespaces ermöglichen es, denselben Objektnamen wie Color zu verwenden , wenn der Name passt, und die Organisation aufrechtzuerhalten. Sie können ein Color- Objekt in Ihrem eigenen Code definieren und es von denen in .NET (oder dem Code anderer Programmierer) unterscheiden.

Namespace MyColor 
Public Class Color 
Sub Color () 
'Tun Sie etwas 
End Sub 
End Class 
End Namespace

Sie können das Color- Objekt auch wie folgt an einer anderen Stelle in Ihrem Programm verwenden:

Dim c As New MyColor.Color 
c.Color ()

Beachten Sie, dass jedes Projekt in einem Namespace enthalten ist, bevor Sie sich mit einigen anderen Funktionen befassen. VB.NET verwendet den Namen Ihres Projekts ( WindowsApplication1 für eine Standardformularanwendung, wenn Sie diese nicht ändern) als Standardnamespace. Um dies zu sehen, erstellen Sie ein neues Projekt (wir haben den Namen NSProj verwendet und das Objektbrowser- Tool überprüft):

  1. Klicken Sie hier , um die Abbildung anzuzeigen
  2. Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren

Der Objektbrowser zeigt Ihren neuen Projektnamespace (und die darin automatisch definierten Objekte) direkt zusammen mit den .NET Framework-Namespaces an. Diese Fähigkeit von VB.NET, Ihre Objekte mit .NET-Objekten gleichzusetzen, ist einer der Schlüssel für die Leistung und Flexibilität. Aus diesem Grund zeigt Intellisense beispielsweise Ihre eigenen Objekte an, sobald Sie sie definieren.

Um das Ganze noch besser zu machen, definieren wir ein neues Projekt (wir haben unser NewNSProj in derselben Lösung benannt (verwenden Sie Datei > Hinzufügen > Neues Projekt … ) und codieren einen neuen Namespace in diesem Projekt. Fügen wir den neuen Namespace in ein neues Modul ein (wir haben ihn NewNSMod genannt ). Da ein Objekt als Klasse codiert werden muss, haben wir auch einen Klassenblock ( NewNSObj ) hinzugefügt . Hier ist der Code und der Projektmappen- Explorer, um zu zeigen, wie es zusammenpasst ::

  1. Klicken Sie hier , um die Abbildung anzuzeigen
  2. Klicken Sie in Ihrem Browser auf die Schaltfläche Zurück, um zurückzukehren

Da Ihr eigener Code „genau wie Framework-Code“ ist, müssen Sie in NSProj einen Verweis auf NewNSMod hinzufügen , um das Objekt im Namespace zu verwenden, obwohl sie sich in derselben Lösung befinden. Sobald dies erledigt ist, können Sie ein Objekt in NSProj basierend auf der Methode in NewNSMod deklarieren . Sie müssen das Projekt auch „erstellen“, damit ein tatsächliches Objekt vorhanden ist, auf das verwiesen werden kann.

Dim o As New NewNSProj.AVBNS.NewNSMod.NewNSObj 
o.AVBNSMethod ()

Das ist allerdings eine ziemlich trübe Aussage. Wir können dies verkürzen, indem wir eine Imports- Anweisung mit einem Alias ​​verwenden.

Importiert NS=NewNSProj.AVBNS.NewNSMod.NewNSObj 
... 
Dim o As New NS 
o.AVBNSMethod ()

Durch Klicken auf die Schaltfläche Ausführen zeigt die MsgBox vom AVBNS Namespace „Hey! Es hat funktioniert!“

 

Wann und warum Namespaces verwendet werden

Bisher war alles nur Syntax. die Codierungsregeln. die Sie bei der Verwendung von Namespaces befolgen müssen. Aber um wirklich Vorteile zu ziehen, brauchen Sie zwei Dinge:

  • Eine Voraussetzung für die Organisation von Namespaces. Sie benötigen mehr als nur ein „Hello World“ -Projekt, bevor sich die Organisation von Namespaces auszahlt.
  • Ein Plan, sie zu nutzen.

Im Allgemeinen empfiehlt Microsoft. dass Sie den Code Ihres Unternehmens mithilfe einer Kombination Ihres Firmennamens mit dem Produktnamen organisieren.

Wenn Sie beispielsweise der Chefsoftwarearchitekt für Dr. No’s Nose Knows Plastic Surgery sind, möchten Sie möglicherweise Ihre Namespaces wie …

DRNo 
Consulting 
ReadTheirWatchNChargeEm 
TellEmNuthin 
Surgery 
ElephantMan 
MyEyeLidsRGone

Dies ähnelt der Organisation von .NET …

Objekt 
System 
Core 
IO 
Linq 
Daten 
Odbc 
Sql

Die mehrstufigen Namespaces werden durch einfaches Verschachteln der Namespace-Blöcke erreicht.

Namespace DRNo 
Namespace Surgery 
Namespace MyEyeLidsRGone 
'VB-Code 
End Namespace 
End Namespace 
End Namespace

oder

Namespace DRNo.Surgery.MyEyeLidsRGone 
'VB Code 
End Namespace

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.