Tag: 序列化

将树视图的内容保存到文件并稍后加载

在我的C#WinForms程序中,我有一个只包含父节点的树视图(因此,没有子节点)它就像一个列表框但我需要它,因为它具有Name,Tag和Text等节点的不同属性。 不,我希望能够将此树视图的内容保存到文件中(基本上是一个文本文件,我称之为* .MVIA)。 问题是什么是保存文件中节点的所有三个属性的最佳方法,以便以后可以再次加载? 目前我提出了这个想法: private void menuFileSave_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); foreach(TreeNode node in treeViewFiles.Nodes) { sb.AppendLine(node.Name); } SaveFileDialog saveList = new SaveFileDialog(); saveList.DefaultExt = “*.mvia”; saveList.Filter = “MVIA Files|*.mvia”; if (saveList.ShowDialog() == DialogResult.OK) { File.WriteAllText(saveList.FileName, sb.ToString()); } } 如您所见,每个节点的每个Name属性都将保存在一行中。 现在我还需要添加它的Text和Tag属性,但后来我很难读回来(老实说我不知道​​怎么做)。 你能给我一些想法,什么是保存每个节点的所有三个属性的最佳方法,并能够在以后轻松加载它? 谢谢。

XML Serialize动态对象

我需要使用以下格式从对象构造一组动态创建的XML节点: My Name Value 1 Value 2 DynamicValues -tag中的节点名称不是事先知道的。 我最初的想法是,这应该可以使用Expando对象 ,例如: [DataContract] public class Root { [DataMember] public string Name { get; set; } [DataMember] public dynamic DynamicValues { get; set; } } 通过使用值初始化它: var root = new Root { Name = “My Name”, DynamicValues = new ExpandoObject() }; root.DynamicValues.DynamicValue1 = “Value 1”; root.DynamicValues.DynamicValue2 = […]

使用XML序列化时的循环引用?

尝试使用XMLSerialization序列化对象时,我收到以下exception。 A circular reference was detected while serializing an object of type MyObject} 我知道循环引用是因为childObject可以有childObject的parentObject的parentObject是parentObject ,但是如果可能的话我想保留该引用。 有没有办法让这个对象在XML序列化中序列化而不会在序列化过程中丢失任何数据? 我对序列化并不熟悉,所以我希望我能设置一些属性。

序列化属性,但不要在Json.Net中反序列化属性

虽然我发现了许多方法来反序列化特定属性,同时阻止它们序列化,但我正在寻找相反的行为。 我发现有很多问题要求反过来: 使用json.net进行属性反序列化但不能序列化 我可以指示Json.NET反序列化,但不能序列化特定属性吗? JSON.Net – 仅在序列化时使用JsonIgnoreAttribute(但在反序列化时不使用) 如何序列化特定属性,但阻止它反序列化回POCO? 是否有可用于装饰特定属性的属性? 基本上我正在寻找与反序列化的ShouldSerialize *方法相当的方法。 我知道我可以写一个自定义转换器,但这似乎有点矫枉过正。 编辑: 这里有更多的背景。 这背后的原因是我的class级看起来像: public class Address : IAddress { /// /// Gets or sets the two character country code /// [JsonProperty(“countryCode”)] [Required] public string CountryCode { get; set; } /// /// Gets or sets the country code, and province or state code delimited […]

如何将我在Panel上绘制的形状保存为二进制

我有一个迷你油漆计划。 我想创建一个保存按钮,将面板细节(形状和正在绘制的所有内容)保存为二进制文件。 我这样做了: SaveFileDialog sfd = new SaveFileDialog(); BinaryFormatter bf = new BinaryFormatter(); var stream = new BinaryReader(File.Open(sfd.FileName,FileMode.Create)); bf.Serialize(stream,object); 但它有一个错误,使用对象在bf.Serialize无效。 我该怎么办?

使用JavaScriptSerializer序列化词典

显然, IDictionary被序列化为KeyValuePair对象的数组(例如, [{Key:”foo”, Value:”bar”}, …] )。 是否可以将其序列化为对象(例如, {foo:”bar”} )?

使用新标签和属性以及根自定义XML序列化

这是我的类型: public class MyObject { public string destAdd { get; set; } public long Time { get; set; } public int maxNumb { get; set; } public Account AccountCredentials { get; set; } public System.String Serialize() { String result = “”; XmlSerializer xs = new XmlSerializer(typeof(MyObject)); MemoryStream ms = new MemoryStream(); xs.Serialize(ms, this); result = […]

实现PropertyChangedBase时的caliburn.micro序列化问题

我正在开发一个客户端/服务器数据驱动的应用程序,使用caliburn.micro作为前端,使用Asp.net WebApi 2作为后端。 public class Person { public int Id {get;set;} public string FirstName{get;set;} … } 该应用程序包含一个名为“Person”的类。 “Person”对象是序列化的(JSON),并使用简单的REST协议从客户端到服务器来回移动。 解决方案正常运行没有任何问题。 问题: 我为“Person”设置了一个父类“PropertyChangedBase”,以实现NotifyOfPropertyChanged()。 public class Person : PropertyChangedBase { public int Id {get;set;} private string _firstName; public string FirstName { get { return _firstName; } set { _firstName = value; NotifyOfPropertyChange(() => FirstName); } } … } […]

如何使用Json.net(C#)反序列化从Exception类派生的对象?

我正在尝试反序列化从Exception类派生的对象: [Serializable] public class Error : Exception, ISerializable { public string ErrorMessage { get; set; } public Error() { } } Error error = JsonConvert.DeserializeObject(“json error obj string”); 它给了我错误: ISerializable类型’type’没有有效的构造函数。

.NET序列化排序

我试图使用XmlSerializer和inheritance序列化一些对象,但我在排序结果时遇到一些问题。 下面是一个类似于我设置的例子:〜 public class SerializableBase { [XmlElement(Order = 1)] public bool Property1 { get; set;} [XmlElement(Order = 3)] public bool Property3 { get; set;} } [XmlRoot(“Object”)] public class SerializableObject1 : SerializableBase { } [XmlRoot(“Object”)] public class SerializableObject2 : SerializableBase { [XmlElement(Order = 2)] public bool Property2 { get; set;} } 我想要的结果如下:〜 但是我得到的结果是:〜 有谁知道它是否可能或任何替代方案? 谢谢