各位老师 : 
   值此元旦佳节之际 , 来信首先祝各位老师元旦快乐 , 新年吉祥 !在某个程序集文件里面  ,  以学生对象为例 ,  介绍了简单对象的序列化和反序列化 ,  相关代码如下 :  
(一)序列化 : 
[Serializable]
class CollegeStudent 
{
public  String  Name  = “空”  ;    //姓名
public  bool  IsMale  =  true  ;   //性别 
public  int  ScoreForEnterExamination  =  0  ;   //入学考试成绩
}Using  ( FileStream writer = new  FileStream(FileName  ,  FileMode.Create))
{
IFormatter  formatter  =  new  BinaryFormatter( )  ;  //创建格式化对象
Formatter.Serialize(writer  ,  stu)   ;    //格式化对象序列化对象 
}(二)反序列化 : 
private  CollegeStudent  DeserializeObj(String  FileName)
{
   Using  (FileStream  reader  =  new  FileStream(FileName  ,  FileMode.Open))
   {
       IFormatter  formatter  =  new  BinaryFormatter( )  ;    
       Return  ( CollegeStudent )formatter.Deserialize(reader)  ;    
   }
}
以上代码 , 如果是在一个程序集文件(.Exe文件或.Dll文件) ,  序列化和反序列化不会有任何问题 。 反序列化之所以不会有问题  , 是因为formatter.Deserialize(reader) 方法返回的对象  , 可以强制转换成CollegeStudent 对象 。
也就是说 , Return  ( CollegeStudent )formatter.Deserialize(reader)  这一条语句能成功通过编译 , 不会有什么编译错误 。 
 但我现在希望 , 在一个程序集文件(.Exe文件)里面将对象序列化到某个配置文件  , 而在另一个程序集文件(.Exe文件)通过前面的配置文件对对象进行反序列化 , 就好象序列化和反序列化是在异地远程进行处理一样  , 结果却没能成功 。
我用到了反射技术  `, 但由于第二个程序集(.Exe文件) 里面没有CollegeStudent 对象 , 相关的反射方法(例如System.. Activator . CreateInstance  ,  System . Type . InvokeMember  ,   System . Reflection . ConstructorInfo 的 Invoke 实例方法 , 等等) , 都无法直接返回 CollegeStudent 对象 。 因为它们的调用形式都如下所示 : 
  Objcet  obj = System . Activator . CreateInstance )  ;
 Objcet  obj = SomeType . InvokeMember( )  ;   
 Objcet  obj =  SomeConstructorInfo . Invoke( )   ;  也就是说 , 返回的都是Object 类型的对象 。 正是因为缺乏CollegeStudent类型 , 所以 Return  ( CollegeStudent )formatter.Deserialize(reader) 在第二个程序集文件 , 不能正确地进行编译 。 也正是因为不能对上面的语句进行编译 , 所以在第二个程序集文件(.EXE文件)里面  , 不能对学生对象进行反序列化 。 以上问题 , 不知道该如何解决 , 还望各位老师多多指教 !