首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

初学Prism、MEF运用陷阱例一

2012-07-04 
初学Prism、MEF应用陷阱例一转自 http://www.189works.com/article-42722-1.html?最近熟悉了一下Prism框架,

初学Prism、MEF应用陷阱例一

转自 http://www.189works.com/article-42722-1.html

?

最近熟悉了一下Prism框架,将自己理解的主要知识点分为如下:

1、BootStrapper-启动引导

2、Region-区域

3、Module-模块

4、Aggregate-聚合事件

5、MVVM

?

根据Prism的QuikStart 以及网上诸多的示例,应用,我们很快便能理解其中的一些知识,并且非常跃跃欲试!

?

经过一翻学习、运行示例之后…………… 开始了自己的第一个Prism应用;

?

按照学习到的知识:

首先、我们新建项目、创建一个Shell 并且标记[Export]

Technorati 标签: 其实我也想不明白为什吗Prism的开发团队会不在基类中默认添加自身程序集的Catalog呢,也许有些应用并不需要Aggregate这类东西,那就让初学者掉入陷阱!

?

好了, 问题分析清楚了,解决办法就是将自身程序集Catalog注册到Container中去就可以了,

示例:

protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();
 
            //加载自身
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));
 
            //加载ViewModel所在Assembly
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(ShellViewModel).Assembly));
 
            //加载Modules目录
            if (Directory.Exists("./Modules"))
            {
                this.AggregateCatalog.Catalogs.Add(new DirectoryCatalog("./Modules"));
            }
        }

?

?

先分享下自己的应用选型, 选择Prism框架的Module\Region\Aggregate功能,当然包含了MEF; 选择SimapleMVVM的MVVM功能;

然后是后话,Prism非常不错的框架,我们现在不管高手、菜鸟 开发的时候都在应用好的设计模式,好的开发方法 和 好的架构;

但是技术更新迅速的同时我们大都是草草了解其使用并直接应用,有时候可能没有完全理解其精粹;拿prism来说,作为企业开发框架,主打功能就是解耦、解耦的方法就是依赖注入,再一个就是设计模式;

?

我们使用prism的完全可以将项目拆分为很多小的工作模块去开发, 目前我的项目中就这样,UI就是纯UI ViewModel单独项目且Export 并且将程序集添加到Prism的Container供UI层去Import

然后ViewModel在通过 IService从Core模块中获取服务,

然后利用ServiceLocator 或者 prism 在任意地方去Import 就可以做很多工作了, 之前做WPF都是将ViewModel在View.xaml中去绑定或者写到资源里,

?

现在我更喜欢这样:

  [Import]
        public ShellViewModel ViewModel
        {
            get
            {
                return (ShellViewModel)this.DataContext;
            }
            set
            {
                this.DataContext = value;
            }
        }

?

?

结尾:对Prism的学习和应用才刚开始,有新的理解和问题我会继续和大家分享 ;另外我现在的项目为C/S分布式应用,服务端EF+WCF+WindowsService, 客户端WPF+WCF ,设计过程和解决问题的过程中也有很多有意思的东西,有时间的话我也会分享出来,供朋友们学习交流!

热点排行