在Remoting中如何使用接口,恳求高人指点
为了不在客户端放置通用库文件,先定义接口,让通用库继承接口,然后在客户端只使用接口.问题是:在客户端使用通用库时    
 ClientActivatedType   CAObject   =   new   ClientActivatedType(); 
 ILease   serverLease   =   (ILease)RemotingServices.GetLifetimeService(CAObject); 
 MyClientSponsor   sponsor   =   new   MyClientSponsor(); 
 serverLease.Register(sponsor); 
 是可以通过的,客户端发起租约成功.但,当只引用接口时: 
 IcskGeneral   CAObject   ; 
 CAObject=(IcskGeneral)Activiter.GetObject(TypeOf(IcskGeneral),url); 
 ILease   serverLease   =   (ILease)RemotingServices.GetLifetimeService(CAObject); 
 报错:错误	1   与“System.Runtime.Remoting.RemotingServices.GetLifetimeService(System.MarshalByRefObject)”最匹配的重载方法具有一些无效参数    
 错误2   参数“1”:   无法从“cdling.IcskGeneral”转换为   system.MarshalByRefObject”   
 报错时光标在GetLifetimeService(CAObject)的CAObject   上.   
 在任炅的讲座中只提到过,但在示例中都是引用的通用库,请问大师门如何解决,因为我不想把通用库放到客户端去! 
------解决方案--------------------试一试:   
 IcskGeneral CAObject ; 
 CAObject=(IcskGeneral)Activiter.GetObject(TypeOf(IcskGeneral),url);   
 //强行转换一下 
 System.MarshalByRefObject tmp = (System.MarshalByRefObject)CAObject;   
 ILease serverLease = (ILease)RemotingServices.GetLifetimeService(tmp); 
------解决方案--------------------RemotingServices.GetLifetimeService(CAObject);   
 把GetLifetimeService的参数改成IcskGeneral接口   
 要搞清楚继承关系ClientActivatedType 能够转化为IcskGeneral 
 但是IcskGeneral接口不能转换为ClientActivatedType
------解决方案--------------------ClientActivatedType   CAObject   =   new   ClientActivatedType();  
这里错了.
若要在客户端使用接口,就必须是服务端激活模式.否则客户端怎么知道构造函数的签名呢?!