gpt4 book ai didi

c# - 未标记为可序列化错误

转载 作者:行者123 更新时间:2023-11-30 23:08:22 34 4
gpt4 key购买 nike

我有一个“实体”类

[Serializable]
public class Entity
{
public Guid Id { get; set; }
public IEnumerable<Entity> ChildEntity { get; set; }
}

我会注意到它具有属性 ChildEntity,它是同一类实体的列表。

问题1。我是否必须明确序列化此列表?或者类上的 Serializable 属性将为我完成这项工作。

现在,当我尝试使用 Binary Serializer 序列化此类时,出现异常,提示此类未标记为可序列化。

我认为当它尝试序列化 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
}

异常信息:

Type 'System.LINQ.Enumerable+WhereSelectListIterator`2[[Common.Models.AllEntity, Common, Version=1.0.0.0, Culture=neutral, 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, Token=null' is not marked as Serializable

最佳答案

如异常所示,您的问题是,在至少一个 Entity 中实例,属性 IEnumerable<Entity> ChildEntity实际上并不指代 List<ChildEntity> , 它指的是 .Where() 的未评估结果. LINQ 查询。

ToList() 实现它存储前。

关于c# - 未标记为可序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46600200/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com