Tag: 序列化

在C#中反序列化过程中创建指向父对象的指针

我有一个类: [Serializable] public class child { public Parent parent; } [Serializable] public class Parent { public List children; } 当我反序列化Parent时,我希望每个孩子都有一个对它的父级的引用。 问题是,在反序列化过程中我可以设置子项的“父”指针吗? 我似乎无法为子进程使用自定义构造函数,因为反序列化始终使用默认构造函数。 如果我实现了ISerializable,那么似乎在创建父级时已经创建了子对象。 有没有其他方法来实现这一目标?

版本化序列化文件

我有一个工作的应用程序将文档(类型IDocument)序列化到磁盘。 从那里开始有另一个我可以打开该文档的应用程序(IDocument实现IPrintDocument)供查看。 我们假设我已经将一个IDocument写入磁盘,然后一周后,一个字段被添加到IDocument对象中。 编写文件的程序和打开它们的程序都使用IDocument的这个新“版本”进行更新。 在尝试打开以前的IDocument版本时,它会破坏(我假设 – 没有机会检查,我在这里outlook)。 是否有一种已知的模式可以缓解这种问题?

将XML部分反序列化为Object

我有一些XML,我将其反序列化为业务对象。 我正在使用XmlSerializer.Deserialize来执行此操作。 但是,我希望XML中包含的一个XmlElement保留一个XElement。 它不能直接完成(使用XmlElementAttribute),因为XElement不是Serializable。 我还试图将该元素序列化为一个字符串(两步尝试获取一个XElement),但失败并出现错误: 意外的节点类型元素。 readelementstring方法只能在具有简单或空内容的元素上调用 知道如何做到这一点? 这是一个xml的例子和我想要的结果对象: … 宾语: public class Person { [XmlAttribute(“Name”)] public string Name {get; set;} ????? public XElement Hobbies {get; set;} [XmlElement(“HomeAddress”)] public Address HomeAddress {get; set;} } 尝试不起作用: [XmlElement(“Hobbies”)] public XElement Hobbies {get; set;} [XmlElement(“Hobbies”)] public string Hobbies {get; set;}

使用nHibernate序列化DetachedCriteria

我正在尝试序列化DetachedCriteria,以便我可以将其保存在数据库中,并在以后重用相同的标准。 当我运行下面的代码时,我得到“NHibernate.Criterion.DetachedCriteria无法序列化,因为它没有无参数构造函数”。 DetachedCriteria criteria1 = DetachedCriteria.For(“so”) .Add(Expression.Eq(“ObjectCode”, “1234”)); XmlSerializer s = new XmlSerializer(typeof(DetachedCriteria)); TextWriter writer = new StringWriter(); s.Serialize(writer, criteria1); writer.Close(); 有没有什么好方法可以序列化DetachedCriteria?

C#对象为XML

我正在创建一个需要将c#对象转换为XML的应用程序。 我正在使用XML Serializer类来实现这一点。 这是代码片段: public class Anwer { public int ID { get; set; } public string XML { get; set; } public Anwer(int ID, string XML) { this.ID = ID; this.XML = XML; } public Anwer() { } } 这是主要function: string AnswerXML = @”1″; List answerList = new List(); answerList.Add(new Anwer(1,AnswerXML)); AnswerXML = @”2″; […]

序列化为JSON,尽管指定了NullValueHandling,但使用Json.NET和Web API省略了Nullable Date

using Newtonsoft.Json; namespace FAL.WebAPI2012.Controllers { public class Person { public int Id {get;set;} public string FirstName {get;set;} public string LastName {get;set;} [JsonProperty(DefaultValueHandling = DefaultValueHandling.Include, NullValueHandling = NullValueHandling.Include)] public DateTime? Dob { get; set; } } public class TestNullsController : ApiController { // GET api/ public Person Get() { Person myPerson = new Person() { Dob […]

如何在xml序列化中控制属性的顺序?

有没有办法按特定顺序拥有System.Xml.Serialization序列化属性? 我正在创建新的xml导出,并且当前属性的顺序不同。 我知道属性顺序无关紧要,但我必须将此xml发送给可能没有这种开明想法的服务器。

Json.Net在序列化时弄乱了DateTimeOffset的时区

我看过很多相关的问题,但似乎没有一个问题适合我。 我正在尝试序列化UTC中的所有内容。 这是我的代码: class Class1 { static void Main() { Class2 foo = new Class2(); JObject json = JObject.Parse(JsonConvert.SerializeObject(foo, new JsonSerializerSettings() { DateParseHandling = DateParseHandling.DateTimeOffset, DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc })); Console.WriteLine(json.ToString()); Console.Read(); } } class Class2 { public DateTimeOffset time = new DateTimeOffset(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddTicks(14663484000000000)); public DateTimeOffset time2 […]

为什么我必须删除xmlns属性才能反序列化我的XML文件?

问题 我在简单的设置文件架构上使用Xsd2Code (用于XSD架构的.NET类生成器)。 出于某种原因,当我尝试使用内置的LoadFromFile()或Deserialize()方法时,我得到一个似乎与我的XSD和XML文件中的xmlns属性相关的exception。 如果我删除这些属性,则exception消失。 (有关实际导致exception的代码的详细信息,请参阅下面的“ 更新 ”。) XSD文件 XML文件(失败) – 当我尝试反序列化时,我得到一个exception SQLEXPRESS CL master XML文件(成功) – 反序列化工作正常 SQLEXPRESS CL master exception详细信息 – 如果我运行“失败示例”会发生什么 A first chance exception of type ‘System.InvalidOperationException’ occurred in System.Xml.dll System.InvalidOperationException: There is an error in XML document (2, 2). —> System.InvalidOperationException: was not expected. at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSettings.Read3_Settings() — End of inner […]

表达式树序列化器

我想在客户端使用Linq表达式,序列化它们并在服务器端执行它们。 为此,我想使用: http : //expressiontree.codeplex.com/ 但我想再次执行它们自己的WCF调用。 这意味着我在WCf方面有一个电话: ImageDTO[] GetImages(XElement exp); 我现在希望在客户端有一个IQueryable(我可以在其上执行Linq表达式),并且我在Serverside上有一个IQueryable(从我的数据访问层,我希望执行序列化表达式)。 但我不知道该怎么做,我没有找到任何例子…… 在客户端我认为我应该在一个类中实现Query,这个类我在构造函数中告诉我使用我的QueryProvider实现(从我调用WCF服务的地方)。 但我不确定这是否正确…… 也许有人可以帮助一个例子。