给梦一个奔跑的方向!
PDF Print E-mail
User Rating: / 0
PoorBest 
Written by xlingfairy
Friday, 26 February 2010 12:28
我把接口(IXXXFetcher)和基类(XXXFetcherBase)都定义在一个 Common 项目里了,基类派生于接口. 然后把 Fetcher定义在另外一个项目里, fetcher 都派生于 XXXFetcherBase.
 
XXXFetcher -> XXXFetcherBase -> IXXXFetcher
 
在主项目里,我用Assembly 得到 Fetcher 项目里可用的类型(XXXFetcher),然后用 Activator 创建 XXXFetcher 的实例,转换为 IXXXFetcher 类型, 并用 Velocity 存储这些 实例.
 
在另外的一个项目里, 需要读取刚才存储的实例,我只把 Common这个项目引用了(因为这个项目不需要用到 Fetcher 项目), 结果在用 Velocity 读取的时候,提示缺少 XXXFetcher 所在的 dll.
明明我在存储的时候,是按 IXXXFetcher 存的,但是这里却提示我缺少具体的XXXFetcher类.真是搞不明白.
 
我猜可能是Velocity 在存储的时候,把 XXXFetcher 的实例 都从 IXXXFetcher 还原为原本的类型了.
 
接口是不能实例化的,基类又被定义为抽象类(abstract)的了, 没有办法,只好又在Common里加了一个不痛不疼的类  Fetcher 派生于 XXXFetcherBase.
 
并在存储的时候先把具体 XXXFetcher实例的数据都转到刚定义的那个那个Fetcher实例里,在存储.
 
在次运行,问题解决!
 

Add comment


Security code
Refresh

Popular Contents

Recommend

Site Info

Members : 1
Content : 130
Web Links : 7
Content View Hits : 99640

Links