草庐IT

$序列化

全部标签

c# - 如何使用采用 XDocument 的构造函数将 XML 反序列化为对象?

我有一个类:publicclassMyClass{publicMyClass(){}}我希望能够使用XMLSeralizer直接在构造函数中反序列化XDocument,因此:publicclassMyClass{privateXmlSerializer_s=newXmlSerializer(typeof(MyClass));publicMyClass(){}publicMyClass(XDocumentxd){this=(MyClass)_s.Deserialize(xd.CreateReader());}}除非我不允许在构造函数中分配给“this”。这可能吗?

c# - 为什么 .Net 框架中有那么多简单类型没有标记为可序列化?

我发现.Net框架中的许多简单类型没有标记为可序列化,这是一个反复出现的不便。例如:System.Drawing.Point或Rectangle。这两个结构都只包含原始数据,应该可以很容易地以任何格式序列化。但是,由于缺少[System.Serializable]属性,我无法将它们与BinaryFormatter一起使用。这有什么我没有看到的原因吗? 最佳答案 这只是一个效率问题。将字段标记为可序列化,编译器必须将每个字段映射到别名表。如果它们都被标记为可序列化,则每个注入(inject)或继承它们的对象都需要映射到别名表以处理其序

c# - 反序列化 XML 时出现 FileNotFoundException

我们最近开始看到在反序列化XML时偶尔会抛出FileNotFoundException。消息是找不到用于从XML映射到代码的临时程序集。来自this文档看起来当.NETFramework无法创建此文件时可能会发生这种情况(但是即使在内部异常中也未捕获的原因)。异常(exception)情况:Type:System.IO.FileNotFoundException,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089Message:Couldnotfindfile'C:\DocumentsandS

c# - 使用 SqlCommand.ExecuteScalar() 从序列中选择在高磁盘使用率时返回 NULL

我遇到SqlCommand.ExecuteScalar()有时在生产环境中返回NULL。我在这里遇到了很多类似的问题,最接近的是:SqlCommand.ExecuteScalarreturnsnullbutrawSQLdoesnot.但给出的建议与我的情况无关。代码示例在这里:using(varconnection=newSqlConnection(connectionString)){connection.Open();using(varcommand=connection.CreateCommand()){command.CommandText="SELECTNEXTVALUEFO

c# - 为什么可空值序列的 Linq-to-Objects 总和本身可以为空?

像往常一样,int?表示System.Nullable(或System.Nullable`1[System.Int32])。假设您在内存中有一个IEnumerable(例如List),我们称它为seq;然后你可以找到它的总和:varseqSum=seq.Sum();当然这会转到扩展方法重载int?IEnumerable.Sum()(documentation)这实际上是System.Linq.Enumerable上的静态方法.但是,该方法永远不会返回null,那么为什么返回类型声明为Nullable?即使在seq的情况下是一个空集合,或者更一般地说,是一个所有元素都是null的集合类型

c# - 使用 Json.net - C# 对象的部分自定义序列化

我要使用Newtonsofts的Json.Net将一些对象和数组序列化为json。这些对象有一组共同的属性,但也有Meta属性,它是一个字典在序列化期间,我希望将键值对添加到我的json对象中,就好像它们位于根级属性中一样,就像这样......{id:1,name:'jeff',food:'spinch',spoon:'ýes'}不是这样的:{id:1,name:'jeff',meta:{food:'spinch',spoon:'ýes'}}我已经深入研究了JsonSerializerSettings,但似乎无法发现我可以跳入并覆盖的位置??? 最佳答案

c# - 为什么我不能使用 XmlSerializer 序列化只读字段?

XmlSerializer不序列化只读字段、只读属性(仅使用getter)、私有(private)字段等。此外,如果类没有无参数构造函数,它也不会序列化对象。我的问题:据我所知,这些问题的出现是因为在反序列化时无法访问(和更改)私有(private)(和只读)字段。但是如果我不反序列化呢?我没有这个选项吗?由于同样的原因(反序列化问题),如果类没有无参数构造函数,它不会序列化对象。但是当我添加一个私有(private)的无参数构造函数时,它工作正常。怎么办?我不喜欢为每个类都添加一个无参数构造函数,并将所有字段设为公共(public)和非只读,只是为了能够对其进行序列化。现在我在私有(

c# - 具体 C# 类中是否需要可序列化属性?

在C#中,假设我们有一个通用类和一个具体类[Serializable]publicclassGenericUser{...[Serializable]publicclassConcreteUser:GenericUser{...是否有必要将ConcreteUser标记为[Serializable]或继承会处理它? 最佳答案 Inherited通过SerializableAttribute的[AttributeUsage]设置为false,所以是的,您需要将其设置在具体类上。参见http://msdn.microsoft.com/en

c# - 为什么XmlSerializer可以序列化抽象类而不能序列化接口(interface)?

编辑这段代码应该可以说明整个问题:[XmlInclude(typeof(AThing1))]publicabstractclassAThing{publicabstractstringName{get;set;}}[XmlInclude(typeof(IThing1))]publicinterfaceIThing{stringName{get;set;}}publicclassAThing1:AThing{publicoverridestringName{get;set;}}publicclassIThing1:IThing{publicstringName{get;set;}}Lis

c# - XML反序列化泛型方法

我有下一个XML文件:d639a54f-baca-11e1-8067-001fd09b1dfd-24145e3b3b4cd-bb8e-11e1-8067-001fd09b1dfd0.28我将它反序列化为这个类:[XmlRoot("Root",IsNullable=false)]publicclassDocBalanceCollection{[XmlElement("Document")]publicListDocsBalanceItems=newList();}DocBalanceItem是:publicclassDocBalanceItem{[XmlElement("Id")]pub