草庐IT

SERIALIZATION

全部标签

c# - 是否可以序列化 LINQ 对象?

我想序列化一些LINQ生成的对象并将它们作为二进制字段存储在表中(不要介意为什么)。我希望能够编写一些看起来像这样的代码:SerialTestDataContextdb=newSerialTestDataContext();relation_tablerow=db.relation_tables.First();MemoryStreammemStream=newMemoryStream();BinaryFormatterbin=newBinaryFormatter();bin.Serialize(memStream,row);Console.WriteLine("Serilizedsu

c# - .net 中 DataContract 属性和 Serializable 属性之间的区别

我正在尝试使用以下方法创建对象的深度克隆。publicstaticTDeepClone(thisTtarget){using(MemoryStreamstream=newMemoryStream()){BinaryFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,target);stream.Position=0;return(T)formatter.Deserialize(stream);}}此方法需要一个序列化的对象,即具有“可序列化”属性的类的对象。我有一个具有属性“DataContract”的类

c# - 序列化同一个类中的多个 DateTime 属性,每个属性使用不同的格式

我有一个具有两个DateTime属性的类。我需要用不同的格式序列化每个属性。我该怎么做?我试过:JsonConvert.SerializeObject(obj,Formatting.None,newIsoDateTimeConverter{DateTimeFormat="MM.dd.yyyy"});此解决方案对我不起作用,因为它将日期格式应用于所有属性。有没有办法用不同的格式序列化每个DateTime属性?也许有一些属性? 最佳答案 处理这种情况的一种直接方法是将IsoDateTimeConverter子类化,为您需要的每种不同日期

c# - 单元测试序列化有什么意义吗?

我有一个类序列化了一组我想进行单元测试的对象(使用XML序列化)。我的问题是感觉我将测试XML序列化的.NET实现,而不是任何有用的东西。我还有一个先有鸡还是先有蛋的小场景,为了测试Reader,我需要Writer生成的文件来执行此操作。我认为我最终要寻求反馈的问题(有3个,但它们都相关)是:是否可以在不使用读取器的情况下测试写入器?测试阅读器的最佳策略是什么(XML文件?模拟记录/回放)?是不是您真正要做的只是测试已反序列化的对象的属性值?测试作者的最佳策略是什么!Xml序列化的背景信息我没有使用架构,因此所有XML元素和属性都与对象的属性相匹配。由于没有架构,与每个对象的属性中发现

c# - 可以将访问频率较低的元素保存到磁盘的字典

在我的应用程序中,我使用字典(支持添加、删除、更新和查找),其中键和值都可以序列化或可以序列化(值可能是非常大的对象图)。当字典变得如此之大以致于将它完全保存在内存中开始偶尔触发OutOfMemoryException(有时在字典方法中,有时在代码的其他部分)时,我遇到了一个问题。在尝试用数据库完全取代字典后,性能下降到无法接受的水平。对字典使用模式的分析表明,通常只有一小部分值是“热”值(经常访问),而其余部分(大部分)是“冷”值(很少或从不访问)。很难说什么时候添加新值是热值还是冷值,而且,随着时间的推移,一些值可能会在热值和冷值之间来回迁移。我认为我需要一个字典的实现,它能够在低

c# - 跨 AppDomain 调用破坏了运行时

这本来是一个比较冗长的问题,但现在我构建了一个更小的可用示例代码,因此原文不再相关。我有两个项目,一个包含一个没有成员的结构,名为TestType。该项目被主项目引用,但程序集不包含在可执行目录中。主项目创建一个新的应用程序域,它在其中使用包含的程序集的名称注册AssemblyResolve事件。在主应用程序域中,处理相同的事件,但它手动从项目资源加载程序集。然后新的应用程序域构建了它自己的TestType版本,但比原始版本具有更多字段。主应用域使用虚拟版本,新应用域使用生成的版本。当调用在其签名中具有TestType的方法时(即使只是返回它就足够了),它似乎只会破坏运行时的稳定性并破

c# - 实现 IEnumerable<T> 的自定义集合的 Json.net 序列化

我有一个实现IEnumerable的集合类,但我在反序列化其序列化版本时遇到了问题。我正在使用Json.netv4.0.2.13623这是我的集合类的简化版本,可以说明我的问题publicclassMyType{publicintNumber{get;privateset;}publicMyType(intnumber){this.Number=number;}}publicclassMyTypes:IEnumerable{privatereadonlyDictionaryc_index;publicMyTypes(IEnumerableseed){this.c_index=seed.

c# - 使用自定义流 (IEnumerable<T>)

我正在使用Stream的自定义实现这将流式传输IEnumerable成一个流。我正在使用这个EnumerableStream实现以执行转换。我正在使用它以流式传输模式通过WCF执行流式传输。我能够转换IEnumerable到流没有问题。有一次,我在客户端,我可以反序列化并获取所有数据,但是我无法找到停止循环我的流的条件。我得到:System.Runtime.Serialization.SerializationException:EndofStreamencounteredbeforeparsingwascompleted.这是我要实现的示例示例:classProgram{public

c# - 如何使用 DataContract 添加 XML 属性

我有一个正在序列化的简单类。[DataContract(Name="Test",Namespace="")]publicclassTest{[DataMember(Order=0,Name="Text")]publicstringText{get;set;}publicTest(){}}这将踢出以下XML:Texthere我想要的是:Texthere如何向XML元素添加属性?提前致谢。 最佳答案 您不能向DataContract添加属性。您要么必须使用实现ISerializable的类,要么使用.NetXmlSerializer。

c# - 根据属性的运行时值选择性地序列化属性

从根本上说,我想根据序列化时的值从生成的Json中包含或省略属性。更具体地说,我有一个类型知道是否已为其分配了一个值,并且我只想序列化该类型的属性,如果已经被分配给它(所以我需要在运行时检查值)。我试图让我的API能够轻松检测“具有默认值”和“根本未指定”之间的区别。自定义JsonConverter似乎不够;我试过了,我相信属性名称在调用转换器之前已经序列化了。就我而言,我什至想省略属性名称。我研究过扩展DefaultContractResolver,但CreateProperty和CreateProperties(返回JsonProperty序列化元数据)仅采用被序列化的类型,因此我