没有标记为可序列化的错误
问题描述:
我有一类“实体”没有标记为可序列化的错误
[Serializable]
public class Entity
{
public Guid Id { get; set; }
public IEnumerable<Entity> ChildEntity { get; set; }
}
我会注意到它具有财产ChildEntity是同一类实体的名单。
问题1。我必须明确地序列化这个列表吗?或者该类的可序列化属性将为我工作。
现在,当我尝试使用二进制序列化器对此类进行序列化时,我得到异常说这个类未标记为可序列化。
我认为当它试图序列化childEntities时发生异常。
这是我的序列化代码。
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
try
{
formatter.Serialize(ms, obj);
}
catch (Exception Ex)
{
//TODO
}
}
}
我也有一个从实体类列表被填充的类。
[Serializable]
public class AllEntity
{
public Guid ParentId {get; set; }
public Guid Id {get; set;} //childId
public string Desc {get; set;}
}
我正在执行递归基于父子关系构建实体类的列表。
public IEnumerable<Entity> Build(IEnumerable<AllEntity> allentity)
{
//recursivey builds List if Entity class
}
异常消息:
类型 “System.LINQ.Enumerable + WhereSelectListIterator`2 [[Common.Models.AllEntity, 普通,版本= 1.0.0.0,文化=中性,'Token = null], [Common.Models.Entity,Common,Version = 1.0.0.0,Culture = neutral, Token = null]'in Assembly'System.Core,Version = 4.0.0.0, Culture = neutral,令牌=空'未标记为可序列化
答
我检查了下面的代码,它的工作正常。
Entity ea = new Entity();
ea.Id = Guid.NewGuid();
var li = new List<Entity>();
li.Add(new Entity { Id = Guid.NewGuid() });
ea.ChildEntity = li;
DeepClone<Entity>(ea);
只需要将类标记为[Serializable]即可。
+0
请参阅更新后的帖子。 – siddharth
什么是包含消息,源,异常类型和内部异常的异常的完整'ToString()'输出?完整的例外信息应该解释更多。 – dbc
它有任何意义吗? –
您可以发布您的完整代码进行调查。 –