关于应用程序域,程序集,插件技术的困惑,怎么没人来,来着有分!

龍月 2010-10-15 09:42:10
我正在从事一个架构的设计,该架构要以插件形式提供扩展
但现在我面临一个技术难题,每个插件都应该支持动态的装载和卸载。如果每个插件(程序集)都由一个单独的应用程序域来装载,这样是可以通过卸载应用程序域来卸载插件,但我的每个插件内部都定义了一些UI信息(如winform窗体),这些UI作为子窗口要集成到父框架中,可问题也来了,应用程序域之间传递的对象是通过远程代理完成的(无法直接访问),所以来自插件UI的直接引用就无法被框架窗口所集成(嵌入到框架父窗口中),我该怎么办呢,高手赐教!

这个问题是我翻csdn 老帖搞出来的,个人兴趣,问题断尾,不知道有没高手给出好办法。
老帖地址http://topic.csdn.net/u/20070307/14/a64f6925-f0bd-45e2-a774-e080804fa20f.html

我自己测试了一下,他说的没错,我插件能获取到宿主窗体对象,能获取对象某些属性,甚至给他Text 属性赋值,但是我要是进行一些控件添加删除操作,就会提示
程序集“System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中的类型“System.Windows.Forms.Form+ControlCollection”未标记为可序列化。我已经都 加了序列化标记
郁闷中。。
...全文
137 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
特别 2010-10-15
  • 打赏
  • 举报
回复
楼主能不能参考一下VS2008本身的扩展机制呢,它貌似可以控制UI,而且插件也是隔离了的
龍月 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bloodish 的回复:]
我插件能获取到宿主窗体对象,能获取对象某些属性,甚至给他Text 属性赋值

插件不应该反过来控制宿主,如果你要实现这样的Plugin机制,个人感觉从走错路了.

这篇文章,仅供参考:
Dynamic Plugins: Using the AppDomain Class to Load and Unload Code
[/Quote]
虽然常理是这样,我就是想 让插件来 控制 宿主。。。
不过已经 有了一点资料 解决问题。 结贴。。
特别 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bloodish 的回复:]

我插件能获取到宿主窗体对象,能获取对象某些属性,甚至给他Text 属性赋值

插件不应该反过来控制宿主,如果你要实现这样的Plugin机制,个人感觉从走错路了.

这篇文章,仅供参考:
Dynamic Plugins: Using the AppDomain Class to Load and Unload Code
[/Quote]

+1
bloodish 2010-10-15
  • 打赏
  • 举报
回复
我插件能获取到宿主窗体对象,能获取对象某些属性,甚至给他Text 属性赋值

插件不应该反过来控制宿主,如果你要实现这样的Plugin机制,个人感觉从走错路了.

这篇文章,仅供参考:
Dynamic Plugins: Using the AppDomain Class to Load and Unload Code
兔子-顾问 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gomoku 的回复:]
你现在的问题是跨AppDomain传递对象。换个思路用当前的AppDomain来加载插件(可以是UI插件)不就解决你的困扰了?
[/Quote]
+1
插件插件,当然是先注册,然后主程序加载插件。如果你测试的代码发到csdn下载,能比较容易知道你的问题是什么。
xiesiren 2010-10-15
  • 打赏
  • 举报
回复
第一次接触,好迷惑!!!
xinyao99 2010-10-15
  • 打赏
  • 举报
回复




gomoku 2010-10-15
  • 打赏
  • 举报
回复
你现在的问题是跨AppDomain传递对象。换个思路用当前的AppDomain来加载插件(可以是UI插件)不就解决你的困扰了?
龍月 2010-10-15
  • 打赏
  • 举报
回复
顶之!!!!!!!
龍月 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gomoku 的回复:]
其实带UI的插件何必要动态装载和卸载?你的程序又不是需要不间断运行的服务。
[/Quote]
主要是想通过插件来获取 主框架 的 form 对象。来修改form
不知道能不能实现
我把主窗体 传给插件口,发现可以更改他的 text 属性
但是添加控件就不行
gomoku 2010-10-15
  • 打赏
  • 举报
回复
其实带UI的插件何必要动态装载和卸载?你的程序又不是需要不间断运行的服务。
vpoint2009 2010-10-15
  • 打赏
  • 举报
回复
高手向,帮顶~
我居然能看懂题目,进步了~~~
龍月 2010-10-15
  • 打赏
  • 举报
回复
沙发自己占了。 没人来啊

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧