Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memperluas
Namespace My di Visual Basic mengekspos properti dan metode yang memungkinkan Anda dengan mudah memanfaatkan kemampuan .NET Framework. Namespace My menyederhanakan masalah pemrograman umum, sering mengurangi tugas yang sulit ke satu baris kode. Selain itu, My namespace sepenuhnya dapat diperluas sehingga Anda dapat menyesuaikan perilaku My dan menambahkan layanan baru ke hierarkinya untuk beradaptasi dengan kebutuhan aplikasi tertentu. Topik ini membahas cara menyesuaikan anggota My namespace yang ada dan cara menambahkan kelas kustom Anda sendiri ke My namespace.
Menyesuaikan anggota My namespace yang sudah ada
Namespace My di Visual Basic memaparkan informasi yang sering digunakan tentang aplikasi, komputer, dan lainnya. Untuk daftar lengkap objek di My namespace, lihat Referensi Saya. Anda mungkin harus menyesuaikan anggota My namespace yang ada sehingga mereka lebih cocok dengan kebutuhan aplikasi Anda. Properti apa pun dari sebuah objek di dalam My namespace yang tidak hanya baca dapat diatur ke nilai kustom.
Misalnya, asumsikan bahwa Anda sering menggunakan My.User objek untuk mengakses konteks keamanan saat ini bagi pengguna yang menjalankan aplikasi Anda. Namun, perusahaan Anda menggunakan objek pengguna kustom untuk mengekspos informasi dan kemampuan tambahan bagi pengguna dalam perusahaan. Dalam skenario ini, Anda dapat mengganti nilai My.User.CurrentPrincipal default properti dengan instans objek utama kustom Anda sendiri, seperti yang ditunjukkan dalam contoh berikut:
My.User.CurrentPrincipal = CustomPrincipal
Mengatur properti CurrentPrincipal pada objek My.User mengubah identitas yang digunakan oleh aplikasi saat berjalan. Objek My.User , pada gilirannya, mengembalikan informasi tentang pengguna yang baru ditentukan.
Menambahkan anggota ke My objek
Jenis yang dikembalikan dari My.Application dan My.Computer didefinisikan sebagai Partial kelas. Oleh karena itu, Anda dapat memperluas My.Application objek dan My.Computer dengan membuat Partial kelas bernama MyApplication atau MyComputer. Kelas tidak boleh merupakan kelas Private. Jika Anda menentukan kelas sebagai bagian dari namespace My, Anda dapat menambahkan properti dan metode yang akan disertakan dalam objek My.Application atau My.Computer.
Contoh berikut menambahkan properti bernama DnsServerIPAddresses ke My.Computer objek:
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
Menambahkan objek kustom ke namespace My
Meskipun namespace My menyediakan solusi untuk banyak tugas pemrograman umum, Anda mungkin menemukan tugas yang tidak ditangani oleh namespace My. Misalnya, aplikasi Anda mungkin mengakses layanan direktori kustom untuk data pengguna, atau aplikasi Anda mungkin menggunakan rakitan yang tidak diinstal secara default dengan Visual Basic. Anda dapat memperluas My namespace untuk menyertakan solusi kustom pada tugas-tugas umum yang khusus untuk lingkungan Anda. Namespace My dapat dengan mudah diperluas untuk menambahkan anggota baru untuk memenuhi kebutuhan aplikasi yang berkembang. Selain itu, Anda dapat menyebarkan ekstensi namespace anda My ke pengembang lain sebagai templat Visual Basic.
Menambahkan anggota ke My namespace
Karena My adalah namespace seperti namespace lainnya, Anda dapat menambahkan properti tingkat atas ke dalamnya dengan hanya menambahkan modul dan menentukan Namespace dari My. Buat anotasi modul dengan atribut seperti yang HideModuleName ditunjukkan dalam contoh berikut. Atribut HideModuleName memastikan bahwa IntelliSense tidak akan menampilkan nama modul saat menampilkan anggota namespace My.
Namespace My
<HideModuleName()>
Module MyCustomModule
End Module
End Namespace
Untuk menambahkan anggota ke My namespace, tambahkan properti sesuai kebutuhan ke modul. Untuk setiap properti yang ditambahkan ke My namespace, tambahkan bidang privat bertipe ThreadSafeObjectProvider(Of T), di mana tipe tersebut adalah tipe yang dikembalikan oleh properti kustom Anda. Bidang ini digunakan untuk membuat instans objek yang aman dari gangguan utas untuk dikembalikan oleh properti dengan memanggil metode GetInstance. Akibatnya, setiap utas yang mengakses properti yang diperluas menerima instance-nya sendiri dari jenis yang dikembalikan. Contoh berikut menambahkan properti bernama SampleExtension yang berjenis SampleExtension ke My namespace:
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
Menambahkan peristiwa ke objek kustom My
Anda dapat menggunakan My.Application objek untuk mengekspos peristiwa untuk objek kustom My Anda dengan memperluas MyApplication kelas parsial di My namespace. Untuk proyek berbasis Windows, Anda dapat mengklik ganda simpul Proyek Saya untuk proyek Anda di Penjelajah Solusi. Di Visual Basic Project Designer, klik tab Aplikasi lalu klik tombol Tampilkan Peristiwa Aplikasi . File baru yang diberi nama ApplicationEvents.vb akan dibuat. Ini berisi kode berikut untuk memperluas MyApplication kelas:
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Anda dapat menambahkan penanganan aktivitas untuk objek kustom My Anda dengan menambahkan penanganan aktivitas kustom ke MyApplication kelas . Peristiwa kustom memungkinkan Anda menambahkan kode yang akan dijalankan saat penanganan aktivitas ditambahkan, dihapus, atau peristiwa dinaikkan. Perhatikan bahwa AddHandler kode untuk peristiwa kustom hanya berjalan jika kode ditambahkan oleh pengguna untuk menangani peristiwa. Misalnya, pertimbangkan bahwa SampleExtension objek dari bagian sebelumnya memiliki Load peristiwa yang ingin Anda tambahkan penanganan aktivitas kustomnya. Contoh kode berikut menunjukkan penanganan aktivitas kustom bernama SampleExtensionLoad yang akan dipanggil saat My.SampleExtension.Load peristiwa terjadi. Ketika kode ditambahkan untuk menangani peristiwa baru My.SampleExtensionLoad, bagian AddHandler dari kode acara kustom ini dijalankan. Metode MyApplication_SampleExtensionLoad ini disertakan dalam contoh kode untuk menunjukkan contoh penanganan peristiwa My.SampleExtensionLoad. Perhatikan bahwa SampleExtensionLoad peristiwa akan tersedia saat Anda memilih opsi Peristiwa Aplikasi Saya di daftar drop-down kiri di atas Editor Kode saat Anda mengedit file 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
Pedoman desain
Saat Anda mengembangkan ekstensi ke My namespace, gunakan panduan berikut untuk membantu meminimalkan biaya pemeliharaan komponen ekstensi Anda.
- Sertakan hanya logika untuk ekstensi perangkat lunak. Logika yang disertakan dalam ekstensi
Mynamespace hanya boleh menyertakan kode yang diperlukan untuk mengekspos fungsionalitas yang dibutuhkan diMynamespace. Karena ekstensi Anda akan berada di proyek pengguna sebagai kode sumber, memperbarui komponen ekstensi menimbulkan biaya pemeliharaan yang tinggi dan harus dihindari jika memungkinkan. - Meminimalkan asumsi proyek. Saat Anda membuat ekstensi namespace dari
My, jangan berasumsi adanya sekumpulan referensi, impor tingkat proyek, atau pengaturan kompilator tertentu (misalnya,Option Strictdinonaktifkan). Sebagai gantinya, minimalkan dependensi dan memperjelas secara penuh semua referensi jenis dengan menggunakan kata kunciGlobal. Selain itu, pastikan bahwa ekstensi dikompilasi denganOption Strictaktif untuk meminimalkan kesalahan dalam ekstensi. - Mengisolasi kode ekstensi. Menempatkan kode dalam satu file membuat ekstensi Anda mudah disebarkan sebagai templat item Visual Studio. Untuk informasi selengkapnya, lihat "Mengemas dan Menyebarkan Ekstensi" nanti dalam topik ini. Menempatkan semua
Mykode ekstensi namespace dalam satu file atau folder terpisah dalam proyek juga akan membantu pengguna menemukanMyekstensi namespace.
Merancang perpustakaan kelas untuk My
Seperti halnya dengan sebagian besar model objek, beberapa pola desain bekerja dengan baik di namespace My dan beberapa tidak. Saat merancang ekstensi ke My namespace, pertimbangkan prinsip berikut:
- Metode Tanpa Status. Metode di
Mynamespace harus memberikan solusi lengkap untuk tugas tertentu. Pastikan bahwa nilai parameter yang diteruskan ke metode menyediakan semua input yang diperlukan untuk menyelesaikan tugas tertentu. Hindari membuat metode yang mengandalkan status sebelumnya, seperti koneksi terbuka ke sumber daya. - Contoh global. Satu-satunya status yang dipertahankan di
Mynamespace adalah global untuk proyek. Misalnya,My.Application.Infomerangkum status yang dibagikan di seluruh aplikasi. - Jenis parameter sederhana. Pertahankan hal-hal sederhana dengan menghindari jenis parameter yang kompleks. Sebagai gantinya, buat metode yang tidak mengambil input parameter atau yang mengambil jenis input sederhana seperti string, jenis primitif, dan sebagainya.
- Metode pabrik. Beberapa jenis dengan sendirinya sulit untuk diinstansiasi. Menyediakan metode pabrik sebagai ekstensi ke
Mynamespace memungkinkan Anda untuk lebih mudah menemukan dan menggunakan jenis yang termasuk dalam kategori ini. Contoh metode pabrik yang berfungsi dengan baik adalahMy.Computer.FileSystem.OpenTextFileReader. Ada beberapa jenis aliran yang tersedia di .NET Framework. Dengan menentukan file teks secara khusus,OpenTextFileReadermembantu pengguna memahami aliran mana yang akan digunakan.
Pedoman ini tidak menghalangi prinsip desain umum untuk pustaka kelas. Sebaliknya, mereka adalah rekomendasi yang dioptimalkan untuk pengembang yang menggunakan Visual Basic dan My namespace. Untuk prinsip desain umum untuk membuat pustaka kelas, lihat Panduan Desain Kerangka Kerja.
Mengemas dan menyebarkan ekstensi
Anda dapat menyertakan My ekstensi namespace dalam templat proyek Visual Studio, atau Anda dapat mengemas ekstensi dan menyebarkannya sebagai templat item Visual Studio. Saat mengemas ekstensi ruang nama Anda sebagai My templat item Visual Studio, Anda dapat memanfaatkan kemampuan tambahan yang ditawarkan oleh Visual Basic. Kemampuan ini memungkinkan Anda menyertakan ekstensi saat proyek mereferensikan rakitan tertentu, atau memungkinkan pengguna untuk secara eksplisit menambahkan ekstensi namespace Anda My dengan menggunakan halaman Ekstensi Saya dari Visual Basic Project Designer.
Untuk detail tentang cara menyebarkan My ekstensi namespace, lihat Mengemas dan Menyebarkan Ekstensi Saya Kustom.