Tag: 序列化

在实现ISerializable时,永远不会遇到GetObjectData()方法

XmlSerializer从不在我的ISerializable上调用GetObjcetData() 。 何时调用GetObjectData() ? 谢谢! class Program { static void Main(string[] args) { var thing = new Thing { Name = “Dude”, Id = 1 }; var xmlSerializer = new XmlSerializer(typeof(Thing)); var sw = new StringWriter(); xmlSerializer.Serialize(sw, foo); var serializedXml = sw.ToString(); var sr = new StringReader(serializedXml); var result = (Thing)xmlSerializer.Deserialize(sr); } } public class […]

如何将参数传递给构造函数反序列化json

在使用Newtonsoft.Json反序列化对象时,将一些父实例传递给构造函数时遇到一个小问题。 我们假设我有以下课程 public class A { public string Str1 { get; set; } public IList Bs { get; set; } } public class B { public B(A a) { // a should not be null! Console.WriteLine(a.Str) } } 现在我对这个对象a serailze而不是反序列化: A a = new A() a.Bs = new List() a.Bs.Add(new B(a)); a.Bs.Add(new B(a)); a.Bs.Add(new B(a)); […]

反序列化数组不支持JSON反序列化类型

我已经阅读了关于反序列化错误的其他两篇文章,但我没有得到任何结论,所以我发布了自己的问题。 我有一个返回JSON的WCF服务。 在对特定类型进行反序列化时,它会失败。 为了让您轻松复制错误,我将下面的JSON硬编码与调用一起。 基本上你应该能够复制/粘贴下面的代码并看到它失败。 消费者需要将其反序列化为工作对象。 s。反序列化失败,并显示标题中指出的错误消息。 注意:我意识到我的JSON中有斜杠。 那些是为了方便逃避报价。 谢谢。 示例代码: var s = new JavaScriptSerializer(); var jstr = “[{\”UserId\”:1,\”WorkoutId\”:1,\”WorkoutInfo\”:[\”Step 1\”,\”Step 2\”]},{\”UserId\”:2,\”WorkoutId\”:2,\”WorkoutInfo\”:[\”Step 1a\”,\”Step 2a\”]},{\”UserId\”:5,\”WorkoutId\”:0,\”WorkoutInfo\”:[\”new work1\”,\”new work 1\”,\”new work 1\”]}]”; Workout blah = s.Deserialize(jstr); var response = ServicePOST(“AddUserWorkout”, workout); 和锻炼课程: public class Workout { public int UserId { get; set; } public List WorkoutInfo { get; […]

如何在序列化时跳过xml声明?

我试图输出一个没有xml头的xml文件,就像我试过的那样: Type t = obj.GetType(); XmlSerializer xs=new XmlSerializer(t); XmlWriter xw = XmlWriter.Create(@”company.xml”, new XmlWriterSettings() { OmitXmlDeclaration = true, Indent = true }); xs.Serialize(xw,obj); xw.Close(); 但它仍然在xml文件中输出。 我不想要字符串技巧。 有任何想法吗?

通过WCF执行自定义SQL查询

我使用ORACLE和SQL Server的WCF服务。 然后我需要“通用”解决方案。 我需要构建一个WCF方法来实质上执行自定义SQL字符串并返回读者结果。 这不是一个很好的做法,可能是最好的避免,它有点打破了WCF服务的重点,但在我的情况下,这需要做。 我不希望WCF数据服务既不能用于其他技术或协议。 只有WCF服务(SOAP)。 关于它的任何好的做法? 也许List<List>返回值需要改进。 SQL Server的源代码。 对于Oracle来说也是如此。 [OperationContract] List<List> executeSQL(string sql, bool returnExpected); public List<List> executeSQL(string sql, bool returnExpected) { List<List> toReturn = new List<List>(); using (SqlConnection con = new SqlConnection(YourConnectionString)) { con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = sql; if (returnExpected == true) { using (SqlDataReader sqlReader = cmd.ExecuteReader()) […]

在C#中两个进程之间进行通信的最简单方法是什么?

在同一台机器上有两个独立的项目A和B(你有他们的源代码),两者都可以编译成EXE文件。 当A运行时,有一个类的实例,比方说a ,我们希望它在运行时在B中的数据。 什么是最简单的方法? 一个面试问题和我的回答是:序列化它并在B中反序列化。但是面试官对这个答案并不满意,因为他告诉我“它可以更容易”。 最后我放弃了,因为我没有更好的解决方案。 你的想法是什么?

C# – OData:无法使用带有’new’属性的Type构建System.Web.Http.OData.Delta

我在ASP.NET Web API 2(而不是Core)中运行一个项目,我有一个像这样的对象: public class Desktop : EntityData { public Desktop() { } public new Guid Id { get { return Guid.Parse(base.Id); } set { base.Id = value.ToString(); } } … } public abstract class EntityData { protected EntityData(); public string Id { get; set; } public bool Deleted { get; set; } } […]

.NET序列化为XML。 如何为数组类型设置别名?

我试图找出.net数组到XML的序列化。 这是我提出的一段代码: public class Program { public class Person { public string Firstname { get; set; } public string Lastname { get; set; } public uint Age { get; set; } } static void Main () { Person[] p = { new Person{Age = 20, Firstname = “Michael”, Lastname = “Jackson”}, new Person{Age = 21, […]

为什么DataContractSerializer按字母顺序排序XML?

我有以下数据合同: namespace Wcf.Contracts.Data { [DataContract] public class Presence { [DataMember] public int Id { get; set; } [DataMember] public DateTime? From { get; set; } [DataMember] public DateTime? To { get; set; } [DataMember] public TimeSpan? BreakPeriod { get; set; } } } 将Presence实例序列化为XML并将相同的XML反序列化为Presence实例效果很好。 但反序列化表示序列化Presence对象的字符串变量给了我奇怪的行为。 某些属性获取默认值而不是XML中的指定值。 我发现XML中代表Presence属性的元素必须按字母顺序排列。 例如,在这段代码中 var dcs = new System.Runtime.Serialization.DataContractSerializer(typeof(Wcf.Contracts.Data.Presence)); var xml1 […]

在MONO-client和ASP.NET服务器之间进行序列化/反序列化 – 可能与否?

我有不同的对象,我希望能够从我的MONO客户端加载和保存在ASP.NET(IIS网络服务器)上 。 所以我把它们作为Class对象。 作为示例,我有[Score],我将用于在服务器上生成一个hiscore。 Score.cs using System.Runtime.Serialization; [System.Serializable] public class Score { public long Total; public string Name; public Score(){} public Score(string name, long total) { Total = total; Name = name; } } 这个代码我想用作MONO作为客户端结构的数据结构(n层架构),在我的ASP.NET服务器中我也将它用作服务器端对象。 我所做的是我想构建一个像这样的列表数组: List hiscores = new List(); hiscores.add (new Score(“Player 1”, 10000)); hiscores.add (new Score(“Player 2”, 20000)); hiscores.add (new Score(“Player 3”, […]