Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozšíření
Obor My názvů v jazyce Visual Basic zveřejňuje vlastnosti a metody, které vám umožní snadno využít výhod rozhraní .NET Framework. Obor My názvů zjednodušuje běžné programovací problémy, často snižuje obtížné úlohy na jeden řádek kódu. Kromě toho je obor názvů plně rozšiřitelný, My takže můžete přizpůsobit chování My a přidat nové služby do své hierarchie tak, aby se přizpůsobily konkrétním potřebám aplikace. Toto téma popisuje, jak přizpůsobit existující členy My oboru názvů a jak přidat vlastní třídy do My oboru názvů.
Úprava stávajících My členů oboru názvů
Obor My názvů v jazyce Visual Basic zveřejňuje často používané informace o vaší aplikaci, počítači a dalších. Seznam objektů v rámci názvového prostoru naleznete v My dokumentu Moje reference. Možná budete muset přizpůsobit existující členy My oboru názvů, aby lépe odpovídaly potřebám vaší aplikace. Libovolnou vlastnost objektu My v oboru názvů, který není jen pro čtení, lze nastavit na vlastní hodnotu.
Předpokládejme například, že objekt často používáte My.User pro přístup k aktuálnímu kontextu zabezpečení pro uživatele, který spouští vaši aplikaci. Vaše společnost ale používá vlastní objekt uživatele k zveřejnění dalších informací a možností pro uživatele v rámci společnosti. V tomto scénáři můžete výchozí hodnotu vlastnosti nahradit instancí vlastního objektu principal, jak je znázorněno v následujícím příkladu:
My.User.CurrentPrincipal = CustomPrincipal
CurrentPrincipal Nastavení vlastnosti objektu My.User změní identitu, pod kterou aplikace běží. Objekt My.User zase 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 My.Application a My.Computer objekty vytvořením třídy s Partial názvem MyApplication nebo MyComputer. Třída nemůže být Private třídou. Pokud zadáte třídu jako součást My oboru názvů, můžete přidat vlastnosti a metody, které budou zahrnuty do objektů My.Application nebo My.Computer.
Následující příklad přidá vlastnost pojmenovanou DnsServerIPAddresses k 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 My oboru názvů
My Přestože obor názvů poskytuje řešení pro mnoho běžných programovacích úloh, můžete narazit na úlohy, které My obor názvů neřeší. Vaše aplikace může například přistupovat k vlastním adresářovým službám pro uživatelská data nebo aplikace může používat sestavení, která nejsou ve výchozím nastavení nainstalována pomocí jazyka Visual Basic. Obor názvů můžete rozšířit My tak, aby zahrnoval vlastní řešení pro běžné úlohy specifické pro vaše prostředí. Obor My názvů lze snadno rozšířit a přidat nové členy tak, aby vyhovoval rostoucím potřebám aplikace. Navíc můžete nasadit rozšíření oboru názvů My ostatním vývojářům jako šablonu pro Visual Basic.
Přidání členů do My oboru názvů
Protože My je obor názvů jako jakýkoli jiný obor názvů, můžete do něj přidat vlastnosti nejvyšší úrovně tak, že přidáte modul a zadáte Namespace hodnotu My. Anotujte modul pomocí atributu HideModuleName , jak je znázorněno v následujícím příkladu. Atribut HideModuleName zajišťuje, že IntelliSense nezobrazí název modulu, když zobrazí členy My oboru názvů.
Namespace My
<HideModuleName()>
Module MyCustomModule
End Module
End Namespace
Pokud chcete přidat členy do My oboru názvů, přidejte do modulu vlastnosti podle potřeby. Pro každou vlastnost přidanou My do oboru názvů přidejte soukromé pole typu ThreadSafeObjectProvider(Of T), kde typ je typ vrácený vaší vlastní vlastností. Toto pole slouží k vytvoření instancí objektů bezpečných pro přístup z více vláken, které mají být vráceny vlastností pomocí volání metody GetInstance. Každé vlákno, které přistupuje k rozšířené vlastnosti, tak ve výsledku obdrží vlastní instanci vráceného typu. Následující příklad přidá vlastnost s názvem SampleExtension typu SampleExtension do My oboru názvů:
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álostí do vlastních My objektů
Objekt My.Application můžete použít k exponování událostí pro vlastní My objekty tím, že rozšíříte částečnou třídu MyApplication v rámci My oboru názvů. Pokud pracujete na projektech pro Windows, můžete dvojím kliknutím na uzel Můj projekt v Průzkumníku řešení. V návrháři projektu jazyka Visual Basic klepněte na kartu Aplikace a potom klepněte na tlačítko Zobrazit události aplikace . Vytvoří se nový soubor s názvem ApplicationEvents.vb . Obsahuje následující kód pro rozšíření MyApplication třídy:
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Obslužné rutiny událostí pro vlastní My objekty můžete přidat přidáním vlastních obslužných rutin událostí do MyApplication třídy. Vlastní události umožňují přidat kód, který se spustí při přidání nebo odebrání obslužné rutiny události, nebo když je událost vyvolána. Všimněte si, že kód pro vlastní událost AddHandler se spustí pouze tehdy, když uživatel přidá kód pro zpracování této události. Představte si například, že SampleExtension objekt z předchozí části má událost, pro kterou chcete přidat vlastní obslužnou Load 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 při výskytu My.SampleExtension.Load události. Při přidání kódu pro zpracování nové události My.SampleExtensionLoad se spustí část kódu AddHandler této vlastní události. Metoda MyApplication_SampleExtensionLoad je zahrnuta v příkladu kódu k zobrazení příkladu obslužné rutiny My.SampleExtensionLoad události, která zpracovává událost. Všimněte si, že SampleExtensionLoad událost bude dostupná, když vyberete možnost Moje události aplikace v levém rozevíracím seznamu nad Editorem kódu při úpravě 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 k návrhu
Při vývoji rozšíření pro My namespace využijte následující pokyny, které vám pomohou minimalizovat náklady na údržbu součástí rozšíření:
- Zahrnout pouze logiku rozšíření. Logika zahrnutá v
Myrozšíření oboru názvů by měla obsahovat pouze kód, který je potřeba k zveřejnění požadovaných funkcí vMyoboru názvů. Vzhledem k tomu, že se vaše rozšíření bude nacházet v uživatelských projektech jako zdrojový kód, aktualizace komponenty rozšíření má vysoké náklady na údržbu a pokud je to možné, měli byste se vyhnout. - Minimalizujte předpoklady projektu. Při vytváření rozšíření
Myoboru názvů nepředpokládáte sadu odkazů, importy na úrovni projektu ani konkrétní nastavení kompilátoru (napříkladOption Strictvypnuto). Místo toho minimalizujte závislosti a plně kvalifikujte všechny odkazy na typy pomocí klíčovéhoGlobalslova. Také se ujistěte, že rozšíření se zkompiluje,Option Strictaby se minimalizovaly chyby v rámci rozšíření. - Izolujte kód rozšíření. Umístěním kódu do jednoho souboru můžete rozšíření snadno nasadit jako šablonu položky sady Visual Studio. Další informace najdete v tomto tématu v části "Balení a nasazení rozšíření". Umístění veškerého
Mykódu rozšíření oboru názvů do jednoho souboru nebo samostatné složky v projektu pomůže také uživatelům najít rozšířeníMyoboru názvů.
Navrhování třídních knihoven pro My
Jak je tomu u většiny objektových modelů, některé návrhové vzory fungují dobře v rámci jmenného prostoru, zatímco jiné nikoli. Při navrhování rozšíření My oboru názvů zvažte následující principy:
- Bezstavové metody. Metody v
Myoboru názvů by měly poskytovat kompletní řešení pro konkrétní úlohu. Ujistěte se, že hodnoty parametrů předané metodě poskytují všechny vstupy potřebné k dokončení konkrétní úlohy. Vyhněte se vytváření metod, které závisejí na předchozím stavu, jako jsou otevřená připojení k prostředkům. - Globální instance. Jediný stav, který je zachován v
Myoboru názvů, je globální pro projekt. NapříkladMy.Application.Infozapouzdřuje stav, který se sdílí v celé aplikaci. - Jednoduché typy parametrů. Udržujte věci jednoduché tím, že se vyhnete složitým typům parametrů. Místo toho vytvořte metody, které buď nepřebírají žádný vstup parametrů, nebo které berou jednoduché vstupní typy, jako jsou řetězce, primitivní typy atd.
- Metody továrny. Některé typy je nezbytně obtížné instancovat. Poskytování továrních metod jako rozšíření
Myoboru názvů umožňuje snadnější objevování a používání typů, které spadají do této skupiny. Příkladem tovární metody, která dobře funguje, jeMy.Computer.FileSystem.OpenTextFileReader. V rozhraní .NET Framework je k dispozici několik typů datových proudů. Zadáním textových souborů pomáháOpenTextFileReaderuživateli pochopit, který datový proud se má použít.
Tyto pokyny nebrání obecným principům návrhu knihoven tříd. Jedná se spíše o doporučení optimalizovaná pro vývojáře, kteří používají Visual Basic a My obor názvů. Obecné principy návrhu pro vytváření knihoven tříd najdete v tématu Pokyny pro návrh architektury.
Balení a nasazování rozšíření
Rozšíření oboru názvů My můžete zahrnout do šablony projektu Visual Studio nebo je zabalit a nasadit jako položku Visual Studio. Když zabalíte My rozšíření oboru názvů jako šablonu položky sady Visual Studio, můžete využít další funkce poskytované jazykem Visual Basic. Tyto funkce umožňují zahrnout rozšíření, když projekt odkazuje na konkrétní sestavení, nebo uživatelům umožnit explicitně přidat My rozšíření oboru názvů pomocí stránky Moje rozšíření návrháře projektu jazyka Visual Basic.
Podrobnosti o nasazení My rozšíření oboru názvů najdete v tématu Balení a nasazení vlastních rozšíření My Extensions.