一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

提供第三種代碼生成方式——通過(guò)自定義BuildProvider為ASP.NET提供代碼生成

  之前寫(xiě)了一些關(guān)于代碼生成的文章,提供了兩種不同方式的代碼生成解決方案,即CodeDOM+Custom ToolT4。對(duì)于ASP.NET應(yīng)用,你還有第三種選擇——自定義BuildProvider。[文中涉及的源代碼從這里下載]

目錄
一、BuildProvider是什么?
二、將XML表示的消息轉(zhuǎn)換成VB.NET或者C#代碼
三、將XML轉(zhuǎn)換成CodeDOM
四、自定義BuildProvider
五、BuildProvider的應(yīng)用

  一、BuildProvider是什么?

  對(duì)于ASP.NET應(yīng)用的開(kāi)發(fā)者來(lái)說(shuō),你可能不知道什么是BuildProvider,但是你幾乎無(wú)時(shí)無(wú)刻不在使用它所帶來(lái)的代碼生成機(jī)制。當(dāng)你創(chuàng)建一個(gè).ASPx文件的時(shí)候,為什么會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)源代碼?當(dāng)你在該.ASPx頁(yè)面中以XML的方式添加一個(gè)按鈕,源代碼中為什么會(huì)自動(dòng)添加一個(gè)同名的屬性。實(shí)際上,ASP.NET就是通過(guò)一個(gè)特殊的BuildProvider實(shí)現(xiàn)了將.ASPx文件內(nèi)容轉(zhuǎn)換成相應(yīng)的源代碼,這個(gè)特殊的.ASPx文件就是:PageBuildProvider。基于不同的文件類型,ASP.NET會(huì)采用不同的BuildProvider進(jìn)行源代碼的生成。比如UserControlBuildProvider和MasterPageBuildProvider分別實(shí)現(xiàn)了基于用戶控件文件(.ascx)和母板頁(yè)(.master)的源代碼生成。你可以通過(guò)查看%Windows%/Microsoft.NET/Framework/v2.0.50727/CONFIG/web.config看看在默認(rèn)情況下使用的BuildProvider以及它基于的源文件類型(擴(kuò)展名)。

   1: <?xml version="1.0" encoding="utf-8"?>
2: <configuration>
3: <system.web>
4: ... ...
5: <compilation>
6: <buildProviders>
7: <add extension=".ASPx" type="System.Web.Compilation.PageBuildProvider"/>
8: <add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider"/>
9: <add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider"/>
10: <add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider"/>
11: <add extension=".ashx" type="System.Web.Compilation.WebHandlerBuildProvider"/>
12: <add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider"/>
13: <add extension=".resx" type="System.Web.Compilation.ResXBuildProvider"/>
14: <add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider"/>
15: <add extension=".wsdl" type="System.Web.Compilation.WsdlBuildProvider"/>
16: <add extension=".xsd" type="System.Web.Compilation.XsdBuildProvider"/>
17: <add extension=".js" type="System.Web.Compilation.ForceCopyBuildProvider"/>
18: <add extension=".lic" type="System.Web.Compilation.IgnoreFileBuildProvider"/>
19: <add extension=".licx" type="System.Web.Compilation.IgnoreFileBuildProvider"/>
20: <add extension=".exclude" type="System.Web.Compilation.IgnoreFileBuildProvider"/>
21: <add extension=".refresh" type="System.Web.Compilation.IgnoreFileBuildProvider"/>
22: <add extension=".svc" type="System.ServiceModel.Activation.ServiceBuildProvider, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
23: <add extension=".xoml" type="System.ServiceModel.Activation.WorkflowServiceBuildProvider, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
24: </buildProviders>
25: </compilation>
26: </system.web>
27: </configuration>

NET技術(shù)提供第三種代碼生成方式——通過(guò)自定義BuildProvider為ASP.NET提供代碼生成,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99国产精品国产精品 | 亚洲精品www久久久久久 | 91玖玖| 色又色 | 国久久| 五月天激情婷婷 | 久久久久久久91精品免费观看 | 欧美人与禽交片在线观看网站 | 91视频网址入口 | 99午夜视频 | 91久久国产口精品久久久久 | 国产精品久久久久久久久岛 | 视频成人永久免费看 | 色伊人国产高清在线 | 青青久久久国产线免观 | 亚洲三级成人 | 在线观看国产情趣免费视频 | 男人狂躁戳女人下免费看 | 日本一区二区三区日本免费 | 中文字幕日韩精品亚洲七区 | 国产无遮挡床戏视频免费 | 国产自线一二三四2021 | 人人澡人人澡人人看青草 | 久久精品国产99久久72 | 久久精品国产一区二区三区肥胖 | 羞羞色男人的天堂伊人久久 | 国产精品美女网站在线观看 | 精品大臿蕉视频在线观看 | 亚洲欧美一级久久精品 | 色一涩| 国产视频高清 | 高清免费久久影院 | 国产精品网红女主播久久久 | 成 人 黄 色 视频播放165 | 91亚洲区国产区精品区 | 国产精品久久久久久一区二区 | 国产精品成人观看视频免费 | 婷婷激情综合网 | 大伊人青草狠狠久久 | 黄色日韩网站 | 国产zzzwww在线观看 |