Rozšíření oboru názvů My v jazyce Visual Basic
Obor názvů My v jazyce Visual Basic zpřístupňuje vlastnosti a metody, které umožňují snadné využít výhod rozhraní .NET Framework. Obor názvů My zjednodušuje běžné programovací problémy, často zkracuje obtížné úloha na jediný řádek kódu. Kromě toho obor názvů My je plně rozšiřitelný, takže můžete upravit vlastní chování My a přidat nové služby do jeho hierarchie k přizpůsobení potřebám specifické aplikace. Toto téma popisuje, jak o přizpůsobit stávající členy oboru názvů My a o jak přidávat vlastní třídy do oboru názvů My.
Obsah témat
Přizpůsobení existující členů oboru názvů My
Přidání členů do My objektů
Přidání vlastních objektů do oboru názvů My
Přidání členů do obor názvů My
Přidání události do vlastních My objektů
Pokyny pro design
Navrhování knihovny třída pro My
Balení a zavedení rozšíření
Přizpůsobení existující členů oboru názvů My
Obor názvů My ve Visual Basic zpřístupňuje často používané informace o aplikace, počítače a další. Pro úplný seznam objektů v oboru názvů My, viz My Reference. Pravděpodobně budete muset přizpůsobit stávající členy oboru názvů My tak, aby lépe odpovídat potřebám vaší aplikace. Libovolné vlastnosti objektů v oboru názvů My , která není určena jen pro čtení může být nastavena na vlastní hodnotu.
Předpokládejme například, že často používáte objekt My.User pro přístup k aktuálnímu kontextu zabezpečení pro uživatele, který spustil vaší aplikaci. Vaše společnost však používá vlastní uživatelské objekt k vystavení dalších informací a možnosti pro uživatele v rámci společnosti. V tomto scénáři můžete nahradit výchozí hodnotu vlastnosti My.User.CurrentPrincipal uvnitř instance vašeho vlastního objektu zabezpečení, jak je znázorněno v následujícím příkladu.
My.User.CurrentPrincipal = CustomPrincipal
Nastavení vlastnosti CurrentPrincipal v objektu My.User změní identitu pod kterou bude aplikace spuštěna. Objekt My.User naopak vrátí informace o nově zadaném uživateli.
Přidání členů do My objektů
Typy vrácené z My.Application a My.Computer jsou definovány jako Partial třídy. Proto můžete rozšířit objekty My.Application a My.Computer vytvořením třídy Partial s názvem MyApplication nebo MyComputer. Třída nemůže být Private třída. Pokud určíte třída jako část oboru názvů My, můžete přidat vlastnosti a metody, které budou zahrnuty do objektu My.Application nebo My.Computer.
Například následující příklad přidá vlastnost s názvem DnsServerIPAddresses do objektu My.Computer.
Imports System.Net.NetworkInformation
Namespace My
Partial Class MyComputer
Friend ReadOnly Property DnsServerIPAddresses() As IPAddressCollection
Get
Dim dnsAddressList As IPAddressCollection = Nothing
For Each adapter In System.Net.NetworkInformation.
NetworkInterface.GetAllNetworkInterfaces()
Dim adapterProperties = adapter.GetIPProperties()
Dim dnsServers As IPAddressCollection = adapterProperties.DnsAddresses
If dnsAddressList Is Nothing Then
dnsAddressList = dnsServers
Else
dnsAddressList.Union(dnsServers)
End If
Next adapter
Return dnsAddressList
End Get
End Property
End Class
End Namespace
Přidání vlastních objektů do oboru názvů My
Přestože obor názvů My poskytuje řešení mnoha běžných programovacích úloh, můžete narazit na úlohy, které obor názvů My neřeší. Například aplikace může přistupovat k vlastním adresářovým službám pro uživatelské data nebo aplikace může používat sestavení, které nejsou nainstalovány ve výchozím nastavení s jazykem Visual Basic. Můžete rozšířit obor názvů My k zahrnutí vlastních řešení běžných úkolů, které jsou specifické pro vaše prostředí. Obor názvů My lze snadno rozšířit o nové členy k uspokojení potřeb rostoucí aplikace. Navíc můžete nasadit vaše rozšíření oboru názvů My jinými vývojářů jako šablonu aplikace Visual Basic.
Přidání členů do obor názvů My
Protože obor názvů My je stejný jako jakékoliv jiný obor názvů, můžete k němu přidat vlastnosti nejvyšší úroveň pouze přidáním modulu a určením Namespace z My. Okomentujte modul atributem HideModuleName , jak je znázorněno v následujícím příkladu. Atribut HideModuleName zajišťuje, že technologie IntelliSense nezobrazí název modul při zobrazit členů oboru názvů My.
Namespace My
<HideModuleName()>
Module MyCustomModule
End Module
End Namespace
Chcete-li přidat členy do oboru názvů My, přidejte podle potřeby vlastnosti do modulu. Pro každou vlastnost přidánu do oboru názvů My, přidejte "private" pole typu ThreadSafeObjectProvider(Of T), kde typ je typ vrácený vaší vlastní vlastností. Toto pole slouží k vytvoření vláknově bezpečné instance, která bude vrácena vlastností pří volání metody GetInstance. V důsledku toho obdrží každé vlákno, který přistupuje k rozšířené vlastnosti, vlastní instanci o vráceném typu. Následující příklad přidá vlastnost s názvem SampleExtension, která je typu SampleExtension, do oboru názvů My:
Namespace My
<HideModuleName()>
Module MyCustomExtensions
Private _extension As New ThreadSafeObjectProvider(Of SampleExtension)
Friend ReadOnly Property SampleExtension() As SampleExtension
Get
Return _extension.GetInstance()
End Get
End Property
End Module
End Namespace
Přidání události do vlastních My objektů
Můžete použít objekt My.Application pomocí kterého můžete zpřístupnit události pro váš vlastní objekt My rozšířením dílčí třídy MyApplication v oboru názvů My. U projektů založených na systému Windows, můžete poklepáním na uzel My projekt ve vašem projekt v Průzkumník řešení. V Návrhář projektu jazyka Visual Basic, klikněte na záložku Application a potom klikněte na tlačítko View Application Events. Bude vytvořen nový soubor s názvem ApplicationEvents.vb. Obsahuje následující kód pro rozšíření tříd MyApplication.
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Můžete přidat obslužné rutiny událost pro své vlastní objekty My přidáním vlastní obslužné rutiny do třídy MyApplication. Vlastní události vám umožňují přidat kód, který bude proveden v případě, že dojde k přidán nebo odebráni obslužné rutiny nebo k vyvolání událost. Všimněte si, že kód AddHandler pro vlastní událost se spustit pouze v případě, že je přidán uživatelem kód ke zpracování událost. Zvažte například, že objekt SampleExtension z předchozího oddíl má událost Load, pro kterou chcete přidat vlastní obslužnou rutinu události. Následující příklad kódu ukazuje vlastní obslužnou rutinu události s názvem SampleExtensionLoad, které bude vyvolána v případě, že dojde k události My.SampleExtension.Load. V případě, že je přidán kód k zpracování nové události My.SampleExtensionLoad, spustí se část AddHandler tohoto kódu vlastní události. Metoda MyApplication_SampleExtensionLoad je zahrnuta v příkladu kódu k zobrazení příkladu obslužné rutina události, která zpracovává událost My.SampleExtensionLoad. Všimněte si, že událost SampleExtensionLoad bude k dispozici, když vyberete možnost Moje události aplikace v levém rozevíracím seznamu nad editorem kódu pří upravování souboru ApplicationEvents.vb.
Namespace My
Partial Friend Class MyApplication
' Custom event handler for Load event.
Private _sampleExtensionHandlers As EventHandler
Public Custom Event SampleExtensionLoad As EventHandler
AddHandler(ByVal value As EventHandler)
' Warning: This code is not thread-safe. Do not call
' this code from multiple concurrent threads.
If _sampleExtensionHandlers Is Nothing Then
AddHandler My.SampleExtension.Load, AddressOf OnSampleExtensionLoad
End If
_sampleExtensionHandlers =
System.Delegate.Combine(_sampleExtensionHandlers, value)
End AddHandler
RemoveHandler(ByVal value As EventHandler)
_sampleExtensionHandlers =
System.Delegate.Remove(_sampleExtensionHandlers, value)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)
If _sampleExtensionHandlers IsNot Nothing Then
_sampleExtensionHandlers.Invoke(sender, e)
End If
End RaiseEvent
End Event
' Method called by custom event handler to raise user-defined
' event handlers.
<Global.System.ComponentModel.EditorBrowsable(
Global.System.ComponentModel.EditorBrowsableState.Advanced)>
Protected Overridable Sub OnSampleExtensionLoad(
ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent SampleExtensionLoad(sender, e)
End Sub
' Event handler to call My.SampleExtensionLoad event.
Private Sub MyApplication_SampleExtensionLoad(
ByVal sender As Object, ByVal e As System.EventArgs
) Handles Me.SampleExtensionLoad
End Sub
End Class
End Namespace
Pokyny pro design
Když vyvinete rozšíření pro obor názvů My, řiďte se následujícími pokyny k minimalizování nákladů na údržbu komponent rozšíření.
Zahrnujte pouze logiku rozšíření. Součástí logiky My obor názvů rozšíření by měla obsahovat pouze kód, který je třeba vystavit v požadované funkce My oboru názvů. Vzhledem k tomu, že vaše rozšíření se bude nacházet v uživatelských projektech jako zdrojový kód, aktualizování komponent rozšíření zahrnuje vysoké náklady na údržbu a pokud je to možné, je vhodné se tomuto vyhnout.
Minimalizujte předpoklady projekt. Při vytváření vaší rozšíření My oboru názvů, předpokládají sadu kompilátor specifické nastavení, dovozy projektu nebo odkazy (například Option Strict off). Místo toho minimalizujte závislosti a plně kvalifikujte všechny typové odkazy pomocí klíčového slova Global. Přesvědčte se také, že se rozšíření zkompiluje s Option Strict nastaveným na zapnuto k minimalizování chyb rozšíření.
Izolujte kód rozšíření. Umístění kód do jediného soubor umožňuje jednoduchou zaveditelnost vašeho rozšíření jako šablonu položky v aplikaci Visual Studio. Další informace naleznete v tématu "Balení a zavedení rozšíření" v další části tohoto tématu. Umístění všech rozšíření oboru názvů My do jediného soubor nebo oddělené složky v projektu rovněž napomáhá uživatelům nalézt rozšíření oboru názvů My.
Navrhování knihovních tříd pro My
Stejně jako v případě s většiny objektů a modelů, některé návrhové vzory v oboru názvů My pracují dobře a jiné nikoli. Při navrhování rozšíření oboru názvů My, zvažte následující zásady:
Bezstavové metody. Metody My oboru názvů by měla poskytnout kompletní řešení pro konkrétní úkol. Zajistěte, že hodnoty parametrů, které jsou předány do metoda, poskytují všechny vstupy potřebné k dokončení určité úlohy. Vyhněte se vytváření metod, které jsou závislé na předchozím stavu, jako například otevření připojení k prostředkům.
Globální instance. Udržované ve stavu pouze My obor názvů je globální projekt. Například My.Application.Info zapouzdřuje stav, který je sdílen v celé aplikaci.
Jednoduché typy parametrů. Zachovejte věci jednoduché vyloučením složitých typů parametrů. Místo toho vytvořte metody, které buď přijímají žádný vstupní parametr nebo které přijímají jednoduché vstupní typy, například řetězce, primitivní typy a tak dále.
Tovární metody. Vytvoření instancí některých typů je obtížné. Poskytování továrních metod jako rozšíření oboru názvů My umožňuje snadnější zjištění a spotřebování typů, které spadají do této kategorie. Příklad tovární metody, která funguje dobře je My.Computer.FileSystem.OpenTextFileReader. V .Net Framework je k dispozici několik typů datový proudů. Specifickým zadáním textových souborů, OpenTextFileReader pomáhá uživateli pochopit, které datový proud použít.
Tyto pokyny nejsou v konfliktu s obecnými vývojovými zásadami pro knihovny tříd. Namísto toho jsou to doporučení, která jsou optimalizována pro vývojáře, kteří používají jazyk Visual Basic a obor názvů My. Pro obecné návrhové principy pro vytváření knihoven tříd naleznete v části Design Guidelines for Developing Class Libraries.
Balení a zavedení rozšíření
Můžete zahrnout rozšíření oboru názvů Mydo šablony projektu Visual Studio nebo můžete vytvořit balíček s vaším rozšířením a nasadit jej jako šablonu položky Visual Studio. Když vytvoříte balíček pro vaše rozšíření oboru názvů Myjako šablonu položky Visual Studio, můžete využít další funkce poskytnuté jazykem Visual Basic. Tyto možnosti vám umožňují zahrnout rozšíření, když se projekt odkazuje na konkrétní sestavení nebo umožňuje uživatelům explicitně přidat vaše rozšíření oboru názvů My pomocí stránky Moje rozšíření v designeru projekt jazyka Visual Basic.
Podrobné informace o způsobu nasazení rozšíření oboru názvů My, viz Balení a nasazení vlastní Moje rozšíření (Visual Basic).
Viz také
Odkaz
Moje stránka Moje Moje rozšíření Návrhář projektu (@)
Stránka aplikace Návrhář projektu (@)
Koncepty
Balení a nasazení vlastní Moje rozšíření (Visual Basic)
Rozšíření aplikačního modelu jazyka Visual Basic
Přizpůsobení které objekty jsou k dispozici v mé (Visual Basic)