【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)
編譯并運(yùn)行快速入門
需要在VisualStudio 2010上運(yùn)行此快速入門示例
代碼下載:ModularityWithMef.zip
先重新生成解決方案
再按F5運(yùn)行此示例
說明:
在此快速入門示例解決方案的
ModularityWithMef.Desktop程序集中
加入了生成成功時(shí)的“后期生成事件命令行”
IF NOT EXIST "$(TargetDir)\DirectoryModules"
mkdir "$(TargetDir)\DirectoryModules"
此命令含義為:
如果在此程序集的bin目錄中沒有DirectoryModules目錄
則創(chuàng)建此目錄
預(yù)先生成事件/后期生成事件命令行的宏請(qǐng)看MSDN的注釋:
http://msdn.microsoft.com/zh-cn/library/aa833259(v=vs.80).aspx
可以在程序集->屬性->生成事件中查看修改這些命令行
ModuleB程序集的成功生成時(shí)的“后期生成事件命令行”
xcopy "$(TargetDir)ModularityWithMef.Desktop.ModuleB.dll"
"$(SolutionDir)ModularityWithMef.Desktop\bin\$(ConfigurationName)\DirectoryModules\" /Y
含義為
把自身生成的dll復(fù)制到DirectoryModules目錄下
ModuleD的程序集也有類似的命令行
另外
ModuleE和ModuleF生成的DLL會(huì)被拷貝到
ModularityWithMef.Desktop程序集的debug目錄下
演練
運(yùn)行程序
1.
主窗口包含六個(gè)模塊
每個(gè)模塊都展示了各自的初始化狀態(tài)。
應(yīng)用程序加載的時(shí)候
程序就發(fā)現(xiàn)并初始化了模塊A和模塊D
程序啟動(dòng)的時(shí)候,通過監(jiān)視目錄,
發(fā)現(xiàn)了ModuleD,就把它初始化了。
當(dāng)模塊A可用的時(shí)候才可被加載
模塊A依賴于模塊D
當(dāng)模塊D加載之后,模塊A才被初始化
窗口下部的跟蹤區(qū)域顯示了模塊初始化的信息
注意:
如果沒有依賴關(guān)系的話,模塊的加載是無順序的。
2.
鼠標(biāo)移動(dòng)到模塊A控件上,顯示了一個(gè)描述性提示,如下圖:
3.
提示信息為:
當(dāng)前控件的狀態(tài),是否被發(fā)現(xiàn),
是否被初始化,下載時(shí)間和依賴性等信息
4.
點(diǎn)擊模塊B和模塊C
兩個(gè)模塊的初始化信息都會(huì)隨之改變
點(diǎn)擊這兩個(gè)模塊會(huì)觸發(fā)這兩個(gè)模塊的加載事件
系統(tǒng)通過監(jiān)視文件夾發(fā)現(xiàn)模塊B
模塊C是被直接引用到系統(tǒng)中的
這兩個(gè)模塊都是在需要的時(shí)候才被加載的
5.
當(dāng)點(diǎn)擊模塊F的時(shí)候,
模塊E和模塊F被加載。如下圖
雖然模塊F先被點(diǎn)擊
但是由于依賴關(guān)系的原因
系統(tǒng)先初始化模塊E,再初始化模塊F
http://www.cnblogs.com/liulun/archive/2012/03/19/2405940.html轉(zhuǎn)載于:https://www.cnblogs.com/tianciliangen/p/4968264.html
總結(jié)
以上是生活随笔為你收集整理的【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nyoj--203--三国志(迪杰斯特拉
- 下一篇: Android中进程与线程