首页 新闻 会员 周边

关于用MEF动态加载silverlight的问题

0
悬赏园豆:160 [已关闭问题] 关闭于 2010-07-31 16:07

这两天我尝试使用MEF动态加载silverlight,大体弄明白了是怎么一回事。

我是这样做的:

1、根据功能划分不同模块,建立多个silverlight class library工程,然后并不直接在silverlight application工程中直接引用,而是通过将各个silverlight class library工程编译成dll。

2、在服务端的Web工程中建立一个文件夹,将上面编译好的各个dll放入其中。

3、在silverlight application工程中的需要用到各个dll的页面中通过webclient从服务端下载相应dll,然后通过MEF动态装配。

用上述步骤我确实实现了动态加载silverlight的功能,但是伴随这也有一个问题。

问题如下:

假如我有一个silverlight class library名叫A,这是一个我需要在silverlight application中进行动态加载dll的一个对象,但是我还有一个silverlight class library名叫B,B并不是我需要动态加载的,但是在创建A的时候我引用了B,并使用了B中封装好的控件。这时如果我只下载A的dll的话,那么在装配A的过程中,A中所有用到B中控件的地方都会报错,指示找不到对应控件。

这就我所头痛的地方,我也曾想过解决办法,

1、将A的dll和B的dll打进一个包内,一起下载到silverlight本地客户端,接着解压包到bin下,然后在使用用流读取本地的A的dll并MEF动态加载A。这样貌似太过繁琐,而且不知道可行性整么样,我还没来的急试。

2、那只有在设计模块的时候注意了,比如说A的dll必须是功能独立的,不能再依赖其他的dll如B,这样在动态加载的时候我就只需要加载A但是这样貌似太难了。不过这样貌似在实际开发中太难了。

小弟才疏学浅,有些东西还没有太明白,可能有些问题在高手看来很幼稚,恳请原谅。还希望各位高手能多多帮忙,给点深入意见!

 

王臣的主页 王臣 | 初学一级 | 园豆:0
提问于:2010-07-28 09:52
< >
分享
所有回答(1)
0

假如我有一个silverlight class library名叫A,这是一个我需要在silverlight application中进行动态加载dll的一个对象,但是我还有一个silverlight class library名叫B,B并不是我需要动态加载的,但是在创建A的时候我引用了B,并使用了B中封装好的控件。这时如果我只下载A的dll的话,那么在装配A的过程中,A中所有用到B中控件的地方都会报错,指示找不到对应控件。

在A exception的时候try catch 一下,然后判断加载需要的dependency不就可以了吗?

或者将B做成一个公共类库,默认下载。比如说ABC三个页面都用到B1,就在打开ABC的时候先下载B1,DEF用到B2,就下载B2。 之类的。

Pandora | 园豆:257 (菜鸟二级) | 2010-07-28 16:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册