Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual Basic'te
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 My ad alanının mevcut üyelerini özelleştirme hem de My ad alanına kendi özel sınıflarınızı ekleme konuları ele alınmaktadır.
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.
My ad alanındaki salt okunur olmayan bir nesnenin herhangi bir özelliği, özelleştirilebilir 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
CurrentPrincipal nesnesindeki My.User özelliğinin ayarlanması, uygulamanın çalıştığı kimliği değiştirir.
My.User nesnesi, sırayla, yeni belirtilen kullanıcı hakkında bilgi döndürür.
Nesnelere My üye ekleme
My.Application ve My.Computer tarafından döndürülen türler Partial sınıfları olarak tanımlanır. Bu nedenle, My.Application veya My.Computer adlı bir Partial sınıf oluşturarak MyApplication ve MyComputer nesnelerini genişletebilirsiniz. Sınıf, Private sınıfı olamaz. Sınıfı My ad alanının bir parçası olarak belirtirseniz, My.Application veya My.Computer nesnelerine eklenmek üzere özellikler ve yöntemler ekleyebilirsiniz.
Aşağıdaki örnek, DnsServerIPAddresses nesnesine My.Computer adlı 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 ekleyerek ve NamespaceMy belirleyerek bu ad alanına üst düzey özellikler ekleyebilirsiniz. Aşağıdaki örnekte gösterildiği gibi modülü HideModuleName özniteliğiyle açıklayın. ö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. İş parçacığı güvenli nesne örnekleri oluşturmak için, GetInstance yöntemini çağırarak bu alan kullanılır ve özellik tarafından döndürülecektir. 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, SampleExtension türünde SampleExtension adlı bir özelliği My ad alanına 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
My.Application ad alanındaki My kısmi sınıfını genişleterek, özel MyApplication nesnelerinizin olaylarını açığa çıkarmak için My nesnesini kullanabilirsiniz. Windows tabanlı projeler için, Çözüm Gezgini'nde projeniz için içinde Projem düğümüne çift tıklayabilirsiniz. Visual Basic Proje Tasarımcısı'ndaUygulama sekmesine ve ardından Uygulama Olaylarını Görüntüle düğmesine tıklayın.
ApplicationEvents.vb adlı yeni bir dosya oluşturulur. Aşağıdaki kod, MyApplication sınıfını genişletmek için içerir.
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Özel My nesneleriniz için olay işleyicileri eklemek amacıyla, özel olay işleyicilerini MyApplication sınıfına 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, SampleExtensionLoad adlı özel bir olay işleyicisini gösterir, bu olay işleyici My.SampleExtension.Load olayı gerçekleştiğinde çağrılacaktır. Yeni My.SampleExtensionLoad olayı işlemek için kod eklendiğinde, AddHandler bu özel olay kodunun bölümü yürütülür.
MyApplication_SampleExtensionLoad yöntemi, My.SampleExtensionLoad olayını işleyen bir olay işleyicisi örneğini göstermek için kod örneğine dahil edilmiştir.
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ındaki
Mymantık, yalnızcaMyad alanında gerekli işlevselliği ortaya çıkarmak 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ı
Myuzantılarınızı oluştururken bir dizi referans, proje düzeyinde içeri aktarma veya belirli derleyici ayarlarını (örneğinOption Strictkapalı) varsaymayın. Bunun yerine,Globalanahtar kelimesini kullanarak bağımlılıkları en aza indirin ve tüm tür başvurularını tam olarak niteler. Ayrıca, uzantıdaki hataları en aza indirmek için uzantınınOption Strictaçıkken 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. Ad alanı uzantısının tüm kodunu tek bir dosyada veya projede ayrı bir klasörde toplamak, kullanıcıların ad alanı uzantısını bulmasına 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:
- Durumsuz yöntemler. Ad alanı içindeki
Myyö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ı
Myiçinde korunan tek durum, projeye küresel olarak uygulanır. Örneğin,My.Application.Infouygulama 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ı
Myolarak 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,OpenTextFileReaderkullanı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 Proje Tasarımcısı'nın My sayfasını kullanarak ad alanı uzantınızı 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.