Visual Basic'te My
Ad Alanını Genişletme
My
Visual Basic'teki ad alanı, .NET Framework'ün gücünden kolayca yararlanmanızı sağlayan özellikleri ve yöntemleri kullanıma sunar. Ad My
alanı yaygın programlama sorunlarını basitleştirir ve genellikle zor bir görevi tek bir kod satırına düşürür. Buna ek olarak, My
ad alanı tamamen genişletilebilir, böylece belirli uygulama gereksinimlerine uyum sağlamak için öğesinin My
davranışını özelleştirebilir ve hiyerarşisine yeni hizmetler ekleyebilirsiniz. Bu konu başlığında hem ad alanının mevcut üyelerini My
özelleştirme hem de ad alanına kendi özel sınıflarınızı ekleme konuları ele alınmaktadır My
.
Mevcut My
ad alanı üyelerini özelleştirme
My
Visual Basic'teki ad alanı, uygulamanız, bilgisayarınız ve daha fazlası hakkında sık kullanılan bilgileri kullanıma sunar. Ad alanı içindeki My
nesnelerin tam listesi için bkz . Başvurum. Ad alanının mevcut üyelerini, uygulamanızın My
gereksinimlerine daha uygun olacak şekilde özelleştirmeniz gerekebilir. Ad alanında My
salt okunur olmayan bir nesnenin herhangi bir özelliği özel bir değere ayarlanabilir.
Örneğin, uygulamanızı çalıştıran kullanıcının geçerli güvenlik bağlamlarına erişmek için nesnesini sık kullandığınızı My.User
varsayalım. Ancak şirketiniz, şirket içindeki kullanıcılara yönelik ek bilgileri ve özellikleri kullanıma açmak için özel bir kullanıcı nesnesi kullanır. Bu senaryoda, aşağıdaki örnekte gösterildiği gibi özelliğin My.User.CurrentPrincipal
varsayılan değerini kendi özel asıl nesnenizin bir örneğiyle değiştirebilirsiniz:
My.User.CurrentPrincipal = CustomPrincipal
nesnesinde özelliğinin CurrentPrincipal
My.User
ayarlanması, uygulamanın altında çalıştığı kimliği değiştirir. Nesnesi My.User
de yeni belirtilen kullanıcı hakkında bilgi döndürür.
Nesnelere My
üye ekleme
ve'den My.Application
My.Computer
döndürülen türler sınıf olarak Partial
tanımlanır. Bu nedenle, veya adlı bir Partial
sınıf oluşturarak ve My.Computer
nesnelerini genişletebilirsinizMy.Application
.MyApplication
MyComputer
Sınıf bir Private
sınıf olamaz. sınıfını ad alanının bir parçası My
olarak belirtirseniz, veya My.Computer
nesnelerine eklenecek My.Application
özellikler ve yöntemler ekleyebilirsiniz.
Aşağıdaki örnek, nesnesine My.Computer
adlı DnsServerIPAddresses
bir özellik ekler:
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
Ad alanına My
özel nesneler ekleme
Ad alanı My
birçok yaygın programlama görevi için çözümler sağlasa da, ad alanının My
ele almadığı görevlerle karşılaşabilirsiniz. Örneğin, uygulamanız kullanıcı verileri için özel dizin hizmetlerine erişebilir veya uygulamanız Visual Basic ile varsayılan olarak yüklenmeyen derlemeleri kullanabilir. Ad alanını My
, ortamınıza özgü ortak görevlere özel çözümler içerecek şekilde genişletebilirsiniz. Ad My
alanı, artan uygulama gereksinimlerini karşılamak üzere yeni üyeler eklemek için kolayca genişletilebilir. Ayrıca, ad alanı uzantılarınızı My
visual basic şablonu olarak diğer geliştiricilere dağıtabilirsiniz.
Ad alanına My
üye ekleme
My
Diğer ad alanları gibi bir ad alanı olduğundan, yalnızca bir modül ekleyip öğesini belirterek Namespace
My
bu ad alanına üst düzey özellikler ekleyebilirsiniz. Aşağıdaki örnekte gösterildiği gibi özniteliğiyle HideModuleName
modüle ek açıklama ekleyin. özniteliği, HideModuleName
Ad alanının üyelerini görüntülerken IntelliSense'in My
modül adını görüntülememesini sağlar.
Namespace My
<HideModuleName()>
Module MyCustomModule
End Module
End Namespace
Ad alanına üye eklemek için My
modüle gereken özellikleri ekleyin. Ad alanına eklenen her özellik için My
türünde bir özel alan ThreadSafeObjectProvider(Of T)
ekleyin; burada tür, özel özelliğinizin döndürdüğü türdür. Bu alan, yöntemi çağrılarak GetInstance
özelliği tarafından döndürülecek iş parçacığı güvenli nesne örnekleri oluşturmak için kullanılır. Sonuç olarak, genişletilmiş özelliğe erişen her iş parçacığı döndürülen türün kendi örneğini alır. Aşağıdaki örnek ad alanına türünde SampleExtension
My
adlı SampleExtension
bir özellik ekler:
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
Özel My
nesnelere olay ekleme
Ad alanında My.Application
kısmi sınıfı My
genişleterek MyApplication
özel My
nesnelerinizin olaylarını kullanıma açmak için nesnesini kullanabilirsiniz. Windows tabanlı projeler için, Çözüm Gezgini'da projeniz için içinde Projem düğümüne çift tıklayabilirsiniz. Visual Basic Project Tasarım Aracı, Uygulama sekmesine ve ardından Uygulama Olaylarını Görüntüle düğmesine tıklayın. ApplicationEvents.vb adlı yeni bir dosya oluşturulur. Sınıfını genişletmek MyApplication
için aşağıdaki kodu içerir:
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Sınıfına özel olay işleyicileri ekleyerek özel My
nesneleriniz için olay işleyicileri MyApplication
ekleyebilirsiniz. Özel olaylar, bir olay işleyici eklendiğinde, kaldırıldığında veya olay tetiklendiğinde yürütülecek kod eklemenize olanak tanır. Özel olay kodunun AddHandler
yalnızca olayı işlemek için kullanıcı tarafından kod eklendiğinde çalıştırıldığını unutmayın. Örneğin, önceki bölümdeki SampleExtension
nesnenin özel olay işleyicisi eklemek istediğiniz bir Load
olayı olduğunu düşünün. Aşağıdaki kod örneği, olay gerçekleştiğinde çağrılacak adlı SampleExtensionLoad
özel bir olay işleyicisini My.SampleExtension.Load
gösterir. Yeni My.SampleExtensionLoad
olayı işlemek için kod eklendiğinde, AddHandler
bu özel olay kodunun bölümü yürütülür. yöntemi MyApplication_SampleExtensionLoad
, olayı işleyen bir olay işleyicisi örneğini göstermek için kod örneğine My.SampleExtensionLoad
eklenir. SampleExtensionLoad
ApplicationEvents.vb dosyasını düzenlerken Kod Düzenleyicisi'nin üst kısmındaki sol açılan listede Uygulama Olaylarım seçeneğini belirlediğinizde olayın kullanılabilir olacağını unutmayın.
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
Tasarım yönergeleri
Ad alanına uzantı geliştirirken My
, uzantı bileşenlerinizin bakım maliyetlerini en aza indirmeye yardımcı olmak için aşağıdaki yönergeleri kullanın:
- Yalnızca uzantı mantığını ekleyin. Ad alanı uzantısına dahil edilen
My
mantık yalnızca ad alanında gerekli işlevselliğiMy
göstermek için gereken kodu içermelidir. Uzantınız kaynak kod olarak kullanıcı projelerinde bulunacağından uzantı bileşeninin güncelleştirilmesi yüksek bakım maliyetine neden olur ve mümkünse kaçınılmalıdır. - Proje varsayımlarını en aza indirin. Ad alanı uzantılarınızı
My
oluştururken bir dizi başvuru, proje düzeyinde içeri aktarma veya belirli derleyici ayarları (örneğin kapalıOption Strict
) varsaymayın. Bunun yerine, anahtar sözcüğünü kullanarak bağımlılıkları en aza indirin ve tüm tür başvurularını tam olarak nitelerGlobal
. Ayrıca uzantıdaki hataları en aza indirmek için uzantının ile birlikteOption Strict
derlendiğinden emin olun. - Uzantı kodunu yalıtın. Kodu tek bir dosyaya yerleştirmek, uzantınızı Visual Studio öğe şablonu olarak kolayca dağıtılabilir hale getirir. Daha fazla bilgi için bu konunun devamında yer alan "Uzantıları Paketleme ve Dağıtma" bölümüne bakın. Tüm ad alanı uzantısı kodunu tek bir dosyaya
My
veya projeye ayrı bir klasöre yerleştirmek, kullanıcıların ad alanı uzantısını bulmasınaMy
da yardımcı olur.
için sınıf kitaplıkları tasarlama My
Çoğu nesne modelinde olduğu gibi, bazı tasarım desenleri ad alanında My
iyi çalışır ve diğerleri çalışmaz. Ad alanına bir uzantı My
tasarlarken aşağıdaki ilkeleri göz önünde bulundurun:
- Durum bilgisi olmayan yöntemler. Ad alanı içindeki
My
yöntemler belirli bir göreve eksiksiz bir çözüm sağlamalıdır. yöntemine geçirilen parametre değerlerinin belirli bir görevi tamamlamak için gereken tüm girişleri sağladığından emin olun. Kaynaklara açık bağlantılar gibi önceki durumu kullanan yöntemler oluşturmaktan kaçının. - Genel örnekler. Ad alanında
My
tutulan tek durum, projenin genel durumudur. Örneğin,My.Application.Info
uygulama genelinde paylaşılan durumu kapsüller. - Basit parametre türleri. Karmaşık parametre türlerinden kaçınarak işleri basit tutun. Bunun yerine, parametre girişi almayan veya dizeler, ilkel türler gibi basit giriş türlerini alan yöntemler oluşturun.
- Fabrika yöntemleri. Bazı türlerin örneğini oluşturmak mutlaka zordur. Fabrika yöntemlerinin ad alanına uzantı
My
olarak sağlanması, bu kategoriye giren türleri daha kolay bulmanızı ve kullanmanızı sağlar. İyi çalışan bir fabrika yöntemi örneğidirMy.Computer.FileSystem.OpenTextFileReader
. .NET Framework'te kullanılabilen çeşitli akış türleri vardır. metin dosyalarını özel olarak belirterek,OpenTextFileReader
kullanıcının hangi akışın kullanılacağını anlamasına yardımcı olur.
Bu yönergeler, sınıf kitaplıkları için genel tasarım ilkelerini içermez. Bunun yerine, Visual Basic ve My
ad alanını kullanan geliştiriciler için iyileştirilmiş önerilerdir. Sınıf kitaplıkları oluşturmaya yönelik genel tasarım ilkeleri için bkz . Çerçeve Tasarım Yönergeleri.
Uzantıları paketleme ve dağıtma
Ad alanı uzantılarını bir Visual Studio proje şablonuna ekleyebilir My
veya uzantılarınızı paketleyip Visual Studio öğe şablonu olarak dağıtabilirsiniz. Ad alanı uzantılarınızı My
Visual Studio öğe şablonu olarak paketlediğinizde, Visual Basic tarafından sağlanan ek özelliklerden yararlanabilirsiniz. Bu özellikler, bir proje belirli bir derlemeye başvurduğunda uzantı eklemenize veya kullanıcıların Visual Basic Project Tasarım Aracı Uzantılarım sayfasını kullanarak ad alanı uzantınızı My
açıkça eklemesine olanak tanır.
Ad alanı uzantılarını dağıtma My
hakkında ayrıntılı bilgi için bkz . Özel Uzantılarımı Paketleme ve Dağıtma.