国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

向Visual Basic程序員介紹My命名空間(一)

2024-07-21 02:21:10
字體:
供稿:網(wǎng)友
excerpted from “microsoft visual basic programmer’s introduction to whidbey” by sean campbell, scott swigart, kris horrocks, derek hatchard, and peter bernhardt.

publisher, microsoft press, isbn # 0-7356-2058-x. © 2004, microsoft corporation

應(yīng)用:my命名空間

新概念

當(dāng)你用vb6編寫應(yīng)用程序時,你曾用到vb的運行庫,這其中包含一大批com對象;以及所用windows版本的win32 api。最初版本的.net framework將這些的大部分內(nèi)容集成到一個龐大的類庫中,這就是我們熟悉的base class library(bcl)。在bcl中有些類支持對系統(tǒng)底層的訪問,有些類能讓你方便地訪問計算機硬件的信息,還有些類能讓你在不同應(yīng)用程序間進(jìn)行網(wǎng)絡(luò)通訊、加密數(shù)據(jù)以及訪問注冊表等等。如果你想作一個徹底的.net開發(fā)者,你必須掌握bcl和它所提供的豐富的功能。如果對bcl缺乏足夠的了解,開發(fā)者就會做出很多不必要的重復(fù)勞動,重新構(gòu)建一些已經(jīng)存在的類。有時.net提供的某種功能“隱藏”得太深,或者相對于龐大的.net framework顯得太不起眼了。有很多人寫文章講述的用他們祖?zhèn)鞯乃惴▉韺崿F(xiàn)的功能,其實可以用framework中的某些類非常容易地實現(xiàn),比如path或passwordderivebyes。事實上,許多人都會告訴你學(xué)習(xí).net其實不是在學(xué)習(xí)visual basic或c#,而是在學(xué)習(xí)bcl。 但是,學(xué)習(xí)bcl也是一項巨大的挑戰(zhàn),因為它太龐大了。有些非常常用的類和那些幾乎用不到的類混雜在一起。為了更容易找到那些框架中最常用的類,visual basic 2005現(xiàn)在提供一種“快捷方式”命名空間——my。你可以通過使用my輕松地訪問計算機、應(yīng)用程序以及用戶信息,還能用它來訪問窗體和web服務(wù)。要注意的一點是my僅能在使用visual basic 2005進(jìn)行開發(fā)時使用,在使用c#時是不能直接訪問到my的。有必要提及my命名空間并不僅僅是一個快捷方式。有些情況下,my命名空間提供的類比你在bcl大量的命名空間中簡單搜索得到的類功能更強大。比如說folder對象提供更多屬性,如drive,該屬性在system.io.directoryinfo類中根本不存在。my還讓微軟思考將“計算機”、“應(yīng)用程序”或“用戶”看作完全的實體,并且自問 “對于一個‘計算機’你應(yīng)當(dāng)能做什么”這樣的問題。思考的結(jié)果包括my.computer.network.ping,這讓你能用一行代碼實現(xiàn)對網(wǎng)絡(luò)計算機的ping操作。你現(xiàn)在用的這項功能以前只有調(diào)用com庫,甚至win32 api才能做到,而現(xiàn)在它能夠在my中輕松地找到并使用。

my命名空間下面分成如下幾個專區(qū):

my對象模型

對象 描述

my.application
包含了當(dāng)前運行應(yīng)用程序的信息,如標(biāo)題、當(dāng)前路徑和版本等。它還能訪問環(huán)境變量,可以讓你輕松地書寫本地應(yīng)用程序日志或自定義日志等。

my.computer
提供應(yīng)用程序所運行的本地計算機硬件或系統(tǒng)底層的信息。比如注冊表、打印機、鍵盤、現(xiàn)實器等。這些都是你能通過該類訪問到的對象。

my.user
包含當(dāng)前用戶的信息,包括用戶顯示名稱、域名稱,組群名稱等。

my.webservices
它允許你輕松地訪問已經(jīng)在項目中添加了web引用的web服務(wù)。

my.forms
一個當(dāng)前項目中存在的窗體的集合。你可以通過它顯示、隱藏這些窗體而不需要在代碼中顯式創(chuàng)建他們的對象。(譯注:這太棒了,vb6程序員的福音)


正如你所見,my命名空間給你了一個便捷的方法,讓你可以在日常開發(fā)中直接訪問那些常用的功能。

深入代碼

在這一節(jié),我將通過一個簡短的示例,帶你深入認(rèn)識my命名空間。這個例子在一定深度上探索了my里面的世界。這個程序有很多選項卡,每個選項卡注重my的一項主要功能。



圖1

my.application 選項卡.

圖像修改– 需要刪除 my.datasources – 這一部分已經(jīng)去掉了
my.application
第一個選項卡——my.application上面有一個數(shù)據(jù)表格控件,它能顯示my.application對象的大部分屬性值。控制這個數(shù)據(jù)表格控件的代碼如下:

clrversioninuse已經(jīng)去掉了(你能在m2 bits見到它,但已經(jīng)被去掉了)

myappds.myapplication.addmyapplicationrow("clr version in use", _

my.application.clrversioninuse.major.tostring() & "." & _

my.application.clrversioninuse.minor.tostring() & "." & _

my.application.clrversioninuse.revision.tostring() & "." & _

my.application.clrversioninuse.build.tostring())

myappds.myapplication.addmyapplicationrow("command line", _

my.application.commandline)

dim cmds as string

for each cmd as string in my.application.commandlineargs

cmds &= ", " & cmd

next

myappds.myapplication.addmyapplicationrow("command line args", _

cmds)

myappds.myapplication.addmyapplicationrow("company name", _

my.application.companyname)

myappds.myapplication.addmyapplicationrow("company name", _

my.application.companyname)

myappds.myapplication.addmyapplicationrow("culture", _

my.application.culture.currentculture.tostring())

myappds.myapplication.addmyapplicationrow("description", _

my.application.description)

myappds.myapplication.addmyapplicationrow("number of procs", _

my.application.environmentvariables.item("number_of_processors").value)

myappds.myapplication.addmyapplicationrow("file name", _

my.application.filename)

myappds.myapplication.addmyapplicationrow("folder", _

my.application.folder.tostring())

myappds.myapplication.addmyapplicationrow("legal copyright", _

my.application.legalcopyright)

myappds.myapplication.addmyapplicationrow("legal trademark", _

my.application.legaltrademark)

myappds.myapplication.addmyapplicationrow("event log name", _

my.application.log.eventlogname)

myappds.myapplication.addmyapplicationrow("mouse pointer", _

my.application.mousepointer.tostring)

myappds.myapplication.addmyapplicationrow("product name", _

my.application.productname)

myappds.myapplication.addmyapplicationrow("cuser application data path", _

my.application.specialfolders.currentuserapplicationdata.tostring())

myappds.myapplication.addmyapplicationrow("title", _

my.application.title)

myappds.myapplication.addmyapplicationrow("version", _

my.application.version.major & "." & my.application.version.minor & "." & _

my.application.version.revision & "." & my.application.version.build)

myappds.myapplication.addmyapplicationrow("working folder", _

my.application.workingfolder.tostring()

上面這段代碼故意寫得有些羅嗦。這段代碼是在利用反射列舉應(yīng)用程序的屬性。把他們都列在代碼里是為了讓你看得更清楚,并了解從一個特定的屬性中可以得到什么。從屬性中取得的每個數(shù)值都被放到一個類型化的數(shù)據(jù)集中。接著my.applicaton選項卡中的一個數(shù)據(jù)表格控件綁定到這個數(shù)據(jù)集中的my.application數(shù)據(jù)表。通過輕松訪問my.application對象的屬性,你可以獲取有關(guān)你的應(yīng)用程序的大量信息。下表列出了my.application對象的詳細(xì)屬性。

my.application

屬性/方法 描述

commandline
返回完整的命令行——exe加上所有參數(shù)。

commandlineargs
返回一個包含所有命令行參數(shù)的集合。

companyname
返回在assemblyinfo.vb中指定的companyname信息。

culture
返回一個culture對象,通過它你可以確定當(dāng)前應(yīng)用程序所在的文化設(shè)置。

description
返回在assemblyinfo.vb中指定的應(yīng)用程序描述信息。

environment variables
列舉當(dāng)前計算機的環(huán)境變量。

filename
返回應(yīng)用程序的程序集名稱。

folder
返回應(yīng)用程序所在的文件夾。

exit
關(guān)閉應(yīng)用程序。

legalcopyright
返回在assemblyinfo.vb中指定的應(yīng)用程序合法版權(quán)。

legal trademark
返回在assemblyinfo.vb中指定的應(yīng)用程序合法商標(biāo)。

log
允許你在本地計算機生成自定義的文件日志或應(yīng)用程序日志。

mousepointer
允許你更改應(yīng)用程序的鼠標(biāo)指針。

productname
返回在assemblyinfo.vb中指定的應(yīng)用程序產(chǎn)品名稱。

specialfolders
返回一個special folder對象,讓你訪問一些特殊的文件夾,如桌面、application data等。

title
返回可執(zhí)行程序集的標(biāo)題

version
返回程序集的版本信息

workingfolder
返回應(yīng)用程序的工作目錄


my.application在開發(fā)中的相關(guān)應(yīng)用

my.application提供了大量的功能,但是所用的代碼要比用vb6或vb.net少得多。下面我們看看如何使用my.application。比如說我們要編寫一段代碼來寫事件日志,現(xiàn)在只要下面這點代碼就夠了:

my.application.log.writeentry("application starting", _
eventlogentrytype.information, 1000)

上面的代碼會在本地應(yīng)用程序事件日志中寫入一條記載。以前用vb.net的時候如果你想寫入事件日志需要寫很多行代碼。如果用vb6,你只能使用app對象提供的非常有限的日志功能,你不能指定事件id,不能寫入系統(tǒng)或安全日志,也不能創(chuàng)建你自定義的日志。

還有一個例子可以很明顯地對比使用my前后所需代碼用量的減少,那就是當(dāng)你需要生成一個自定義日志,并希望寫入一個文本文件的時候。

my.application.log.filename = my.application.folder.tostring() & _

"/logfile.txt"

my.application.log.filetype = monitoring.logfiletype.xml

my.application.log.writeentry("application starting", _

eventlogentrytype.information, 1000)

使用這些代碼,要寫入的信息除了寫進(jìn)應(yīng)用程序事件日志中意外,還被寫到一個自定義的xml日志文件中去。你可以使用my.application.log的filemaximumsize屬性設(shè)置文件的最大尺寸。你可以指定一中日志文件的類型,可以是xml,也可以是用my.application.log.filetype屬性指定的tab分割類型。你能編寫程序控制使用或不同日志功能,還可以在運行時更改日志文件。



figure 2圖二

xml 日志輸出

my.application還可以讓你用一行代碼直接訪問很多應(yīng)用程序級別的信息。下面有一些這方面的例子:

· 用folder屬性快速確定你的應(yīng)用程序所在文件夾。

· 用mousecursor快速設(shè)定一些默認(rèn)的光標(biāo)類型,如appstaring,,help等

· 快速訪問一些程序集的原數(shù)據(jù),如產(chǎn)品名稱,公司名稱等。

<未完待續(xù)>

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 水城县| 宁晋县| 北票市| 永清县| 资源县| 吉安县| 沾化县| 藁城市| 新竹市| 肇东市| 宣恩县| 屯昌县| 延川县| 克什克腾旗| 蒲城县| 陕西省| 健康| 新民市| 宣武区| 景泰县| 棋牌| 南宁市| 襄垣县| 荣成市| 维西| 合肥市| 治多县| 松滋市| 类乌齐县| 恩平市| 贵阳市| 定安县| 鹰潭市| 缙云县| 左云县| 枣庄市| 疏附县| 赣榆县| 绵竹市| 凉山| 泗阳县|