溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VB.NET如何實(shí)現(xiàn)反射功能

發(fā)布時(shí)間:2021-12-02 09:50:32 來源:億速云 閱讀:380 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)VB.NET如何實(shí)現(xiàn)反射功能的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

我將利用VB.NET反射功能,構(gòu)建一個(gè)自動(dòng)完成初始化文件的保存/讀寫功能的類。在這個(gè)類中,只要程序作者在類內(nèi)部按程序選項(xiàng)的名稱定義好類的內(nèi)部成員變量(由于這個(gè)步驟仍然需要程序員進(jìn)行類內(nèi)的手工編碼,所以稱這個(gè)類為半自動(dòng)初始化類),這個(gè)類就自動(dòng)將程序選項(xiàng)從初始化文件中保存/讀取的工作,程序員不必再進(jìn)行繁瑣的讀寫文件部分的編碼。而且,這個(gè)類的構(gòu)建還可以有一個(gè)好處:由于應(yīng)用程序的選項(xiàng)都以成員變量的形式保存在類的內(nèi)部,程序員可以利用 VS提供的自動(dòng)列出變量成員的功能查詢初始化文件的選項(xiàng)。例如這樣寫 string myAPPname= tobjAPPOption.General.APPName。據(jù)我所知,記住大量的程序選項(xiàng)的確切字符也不是什么好玩的事哦8-)

VB.NET反射功能

初始化文件內(nèi)容的需求。我們首先分析觀察一個(gè)標(biāo)準(zhǔn)的windows初始化文件win.ini內(nèi)容:

[windows]  load=  run=  NullPort=None device=HP LaserJet 6L PCL,PCL5EMS3,\\E***18B631240425\HPLaserJ  [Desktop]  Wallpaper=(無)  TileWallpaper=1 WallpaperStyle=0

該初始化文件的內(nèi)容用方括號(hào)括住的部分我們稱為初始化文件的節(jié),每一節(jié)下都組織了一系列與節(jié)有相應(yīng)功能的程序選項(xiàng)。如desktop節(jié)下就含有桌面墻紙(Wallpaper)/桌面墻紙鋪設(shè)(WallpaperStyle)的設(shè)置。在初始化文件中程序的選項(xiàng)大都可以用字符串/數(shù)字這些簡(jiǎn)單的數(shù)據(jù)類型進(jìn)行保存。

根據(jù)這一需求,考慮到目前在VB.NET中使用xml文件非常方便,而且使用xml格式除可實(shí)現(xiàn)常規(guī)windows初始化文件的功能外,還可以多出樹形結(jié)構(gòu)組織的優(yōu)勢(shì),所以本文設(shè)計(jì)的初始化文件確定采用xml文件格式。并作以下格式的XML文件的元素定義:

'Net對(duì)象以XML元素保存使用的格式定義  'Net對(duì)象的定義  '<Class ObjectName=對(duì)象名稱 ObjectType(數(shù)據(jù)類型)=數(shù)據(jù)類型 > 數(shù)據(jù)內(nèi)容 </數(shù)據(jù)類型>  '數(shù)組的定義 目前本類中實(shí)現(xiàn)的數(shù)組只支持string的一維數(shù)組  '<Array ObjectName=對(duì)象名稱 ObjectType=數(shù)據(jù)類型 Length=數(shù)組大小> 元素定義</Array> '如果數(shù)組數(shù)組為nothing則格式如下  '<Array ObjectName=對(duì)象名稱 ObjectType=數(shù)據(jù)類型 Length=0>nothing</Array>  '簡(jiǎn)單對(duì)象的定義'int32、String等  '<SimpleObject ObjectName=對(duì)象名稱 ObjectType(數(shù)據(jù)類型)=數(shù)據(jù)類型 > 數(shù)據(jù)內(nèi)容 </數(shù)據(jù)類型> '當(dāng)SimpleObject代表數(shù)組內(nèi)的元素時(shí),objectname代表數(shù)組的維數(shù)   'ObjectName 、ObjectType、 Lenght 屬性的使用舉例如下  '例如Redim mai32Test(7) As String  'ObjectName取值為mai32Test,ObjectType取值為string[],Length 值為8

在VB.NET反射功能中,可以枚舉特定類型對(duì)象所包含的成員變量的類型及儲(chǔ)存值,這個(gè)功能經(jīng)常被一些普通程序員忽略,認(rèn)為用途并不大。但在本文中,這一功能將成為構(gòu)建半自動(dòng)化初始化對(duì)象的核心,我們正需要這種功能將寫在初始化類中的變量類型和值自動(dòng)向初始化文件保存或讀取。

感謝各位的閱讀!關(guān)于“VB.NET如何實(shí)現(xiàn)反射功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI