免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Module XAF新手入門 - 模塊

模塊概述談到模塊大家應(yīng)該都不會感到陌生,不管是前端還是后端都有模塊的概念,XAF中的模塊概念與大多數(shù)框架中的模塊概念是相通的 。XAF模塊首先是一個.NET類庫,同時它還包含一個繼承自ModuleBase的Module類,Module類主要用于收集及對外暴露模塊中的一些資源(BusinessObject、Controller、Action、Model、PropertyEditort等),同時XAF模塊間的依賴與.NET類庫間的依賴也是一致的,比如:A模塊依賴B模塊,B模塊依賴C模塊,那A模塊同時擁有了B模塊與C模塊所提供的資源 。XAF模塊涵蓋的功能很多,當前只對模塊的部分功能進行介紹,后續(xù)還會與其它的概念一起介紹 。

XAF默認提供了大量的基礎(chǔ)功能模塊(審計、圖表、儀表盤、驗證、報表、狀態(tài)機等),你可以根據(jù)需要將這些模塊添加到你的項目中 。
項目結(jié)構(gòu)XAF項目主要包含應(yīng)用程序項目與模塊項目,當然也可以包含普通的.NET項目 。應(yīng)用程序項目是負責項目的啟動,所以它需要指定平臺(WinForm與Blazor),模塊項目在不依賴特定平臺時,是可以被其它應(yīng)用程序項目或其它模塊項目引用,依賴特定平臺后,只能被特定平臺的項目引用 。
在XAF22.1之前的版本中,XAF項目中包含兩種模塊項目類型,一種是與平臺相關(guān)的,一種是不相關(guān)的,在之后的版本中,將平臺相關(guān)的模塊代碼移到了應(yīng)用程序項目中,目的是為了簡化項目結(jié)構(gòu) 。如果你想創(chuàng)建獨立的模塊,并且模塊中包含了不同平臺的代碼,你還是需要創(chuàng)建平臺相關(guān)的模塊項目 。
模塊注冊模塊注冊分為兩種,一種是模塊間依賴的注冊,一種是將模塊注冊到應(yīng)用程序項目中,這兩種注冊方式是不一樣的 。
在整個XAF項目啟動過程中模塊是最先被初始化的,這里要引出一個概念A(yù)pplication(在不同的平臺會有不同的實現(xiàn),它們都是XafApplication的子類),從名字你就可以看出它在XAF中的地位,它上面掛載了運行XAF所需的所有資源,XAF模塊當然也在其中,同時它還提供了豐富的功能,在WinForm項目中Application是以單例形式存在的,在Blazor項目中每一個會話都會有一個Application實例,現(xiàn)在你可以簡單將Application理解為整個XAF應(yīng)用的中心,后面會對它進行單獨的介紹 。
模塊注冊到應(yīng)用程序項目中在XAF22.1后,將模塊注冊到應(yīng)用程序項目中WinForm與Blazor采用了相同的配置方式,下面以WinForm為例
Module XAF新手入門 - 模塊

文章插圖
上面的代碼是ApplicationBuilder類中的片段,在XAF22.1后,WinForm項目都會存在一個ApplicationBuilder類,它是用于構(gòu)建Application實例 。接觸過XAF的小伙伴對上面的代碼應(yīng)該比較容易理解,這里簡單的解讀一下,builder是IXafApplicationBuilder<TBuilder>的一個實例,在不同的平臺(WinForm與Blazor)會有不同的實現(xiàn) 。
builder.Modules是專門用于將模塊注冊到應(yīng)用程序項目中的,它上有一個Add方法可以方便對模塊進行注冊,當然你也可以基于Add方法再作進一步的封裝,例如:AddConditionalAppearance(ConditionalAppearance模塊的注冊方法),注冊模塊的先后順序并不影響模塊的加載 。
在之前的XAF版本中,將模塊注冊到應(yīng)用程序項目中,都是將模塊中Module類的實例添加到Application.Modules中,新的注冊方式可讀性更強,目的是相同的,但將模塊添加到Application.Modules中是在builder.Build()時執(zhí)行的 。
builder實例中包含一個_buildSteps委托集合,調(diào)用builder上的方法也就是向_buildSteps集合中添加委托(Action<XafApplication>),委托有一個Application參數(shù),借用此參數(shù)可以對Application進行配置,最后的builder.Build()是將_buildSteps集合中的委托遍歷并執(zhí)行,并返回Application的一個實例 。下面是Build方法簡化后的代碼

經(jīng)驗總結(jié)擴展閱讀