单实例插件可以通过两个途径实现
第一个在注册时注册成单实例
beanFactory.RegisterBean(pvPluginID: String; pvClass: TClass;
pvSingleton: Boolean = false): TPluginINfo;第三个参数为true代表注册的是单实例插件
第二种是在配置文件中设置插件为singleton
{
singleton:true
….
}
在getBean的时候在会根据是否单实例,来处理
第一种方式的处理方式
第二种的处理方式,是存放在FBeanList中的
然后在DLL释放的时候会处理BeanINfo和PluginINfo列表的的释放,
可以看出如果该接口如果实现了IFreeObject就会执行对应的FreeObject方法,可以释放对象
如果在此之前你这个对象提前释放,就会进行重复释放,导致错误。
原文:http://www.cnblogs.com/DKSoft/p/3937811.html