听棠.NET

用积极乐观的心态,面对压力
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

“可序列化”属性的不可继承,有其他办法解决吗?

Posted on 2005-03-29 15:04  听棠.NET  阅读(2219)  评论(13编辑  收藏  举报
可序列化属性是何继承?
 在我转载的文章:.NET 中的对象序列化[转]  我用红色标识了一段:
 

需要注意的是,无法继承 Serializable 属性。如果从 MyObject 派生出一个新的类,则这个新的类也必须使用该属性进行标记,否则将无法序列化。例如,如果试图序列化以下类实例,将会显示一个 SerializationException,说明 MyStuff 类型未标记为可序列化。

 可是我目前有个问题:
  一个抽象的基类ObjectEntity,在基类中我定义了一个方法,此方法用于进行深度Clone:
 

public EntityObject DeepClone()
        
{
        
            
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
            
{
                BinaryFormatter formatter
=new BinaryFormatter();
                formatter.Serialize(stream,
this);
                stream.Position 
= 0;
                
return (EntityObject)formatter.Deserialize(stream);
            }

        
        }


 目前一个实体类SuppliersEntity:ObjectEntity 继承于ObjectEntity类
 如果此SuppliersEntity使用[Serializable]标明,那么SuppliersEntity的对象supplier1.DeepClone()是没有问题的。 

 但我想,有没有其他的办法,不要给SupplierEntity标明Serializable,直接继承自ObjectEntity后,就具有可序列化的属性呢?
 因为给那么多的实体类加[Serializable]也挺麻烦的。