Tag: 序列化

如何使用无参数构造函数XML序列化密封类?

我目前正在使用XMLSerializer来序列化我自己的类的列表。 类的一个属性是一个没有无参数构造函数的密封类的实例,因此XML Serializer拒绝序列化该类。 我怎么能绕过这个? 我需要将该属性序列化。 有什么方法可以指定该类应该如何序列化? 我们想继续使用XML; 是否有另一个我可以使用的XML序列化器没有这个问题? 我再次道歉,如果这是一个骗局,但我不知道该搜索什么。 [编辑]为了澄清,我无法访问密封类的来源。

在c#中序列化和存储对象的最简单方法?

我正在寻找一个简单的解决方案来序列化和存储包含配置,应用程序状态和数据的对象。 它是一个简单的应用程序,它不是很多数据。 速度没问题。 我希望它在进行中。 我希望它在texteditor中比xml更容易编辑。 我无法找到.net的任何文件数据库,可以在进程中处理它。 只是序列化为xml我不确定我想要做什么,因为它的… xml。 序列化为JSON似乎非常具有javascript,我不会在javascript中使用这些数据。 我认为有很好的方法可以做到这一点,但我仍然倾向于使用JSON,尽管它的javascript inflenation。

如何在C#中将XML元素反序列化为具有属性和文本的元素数组?

我在尝试反序列化这个XML时遇到问题: http://abc.co.uk http://ebay.co.uk http://stackoverflow.com 使用代码: [XmlRoot(“links”)] public class LinksInterface { [XmlElement(“link”)] public List Links; public class LinkElement { [XmlAttribute(“title”)] public string Title; [XmlText] // This bit is the troublesome bit! public LinkElement Link; } } 基本上,我需要将元素的文本内容放入Links.Link但我正在尝试的属性[XmlText]不提供我期望的行为,我得到错误: 反映字段’链接’时出错。 。 如果有人能够指出我的方式的错误,我将非常感激! 谢谢。

类型为T的通用,其中T具有特定属性

是否可以创建T类型的generics方法,其中T具有特定属性? 例如: public static XmlDocument SerializeObjectToXml(T obj) { //… } 我想只序列化具有Serializable和/或DataContract属性的类: [Serializable] [DataContract(Name = “viewModel”, Namespace = “ns”)] internal class ViewModel { //… }

重新加载RTF后未检测到下划线

我目前正在尝试使用基本格式的RichTextBox为我的新测试笔记软件Lilly Notes工作 。 Brian Lagunas关于这个主题的文章让我朝着正确的方向前进,但是我遇到了一些问题。 如果单击带下划线的文本,则会按下“下划线”按钮,因此正在识别状态。 但是,如果我将其序列化为RTF然后将其反序列化为RichTextBox,则不会检测到它。 由于Lilly Notes中的代码在这里展示并不容易,我创建了一个SSCCE来演示这个问题。 首先,MainWindow.xaml: 这就是它的样子: 在代码隐藏中,我有代码在选择更改时检测格式的状态,并相应地更新下划线按钮的状态。 这与Brian Lagunas的方法没有什么不同。 private void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e) { if (this.RichText.Selection != null) { object currentValue = this.RichText.Selection.GetPropertyValue(Inline.TextDecorationsProperty); this.UnderlineButton.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != null && currentValue.Equals(TextDecorations.Underline); } } 然后我有一个方法(和另一个辅助方法),它将RTF保存到字符串,然后将其应用于RichTextBox。 我只是为了保持简单而这样做 – 在Lilly Notes中,我将该字符串保存到数据库中,然后在再次运行应用程序时将其加载回来。 public Stream GenerateStreamFromString(string s) { […]

如何编写自定义POCO串行器/解串器?

我想为FIX消息编写一个自定义的.NET序列化器/解串器(它不像XML)。 基本上,消息编码为=;=;… 所以样本可能是: 51=2;20=hello;31=2 我想使用我的FIX Serializer类,类似于我使用XMLSerializer类来序列化/反序列化消息的方式。 我想我会写一个FIX消息类,如: [Serializable] public class FixMessage { [FIXValuePair(51)] public double Price { get; set; } [FIXValuePair(20)] public string SomethingElse { get; set; } } 关于如何编写这样的Serializer / Deserializer的任何指针?

在反序列化期间忽略属性

我有一个非常好的序列化的课 – 最后! 现在我想为这个类添加一个属性,我根本不想被序列化。 是否可以使用某种属性添加此新属性,以便在调用serialize或deserialize方法时,此属性将被忽略?

从字符串中删除所有“隐形”字符?

我正在编写一个小类来读取文件中的键值对列表并写入Dictionary 。 此文件将具有以下格式: key1:value1 key2:value2 key3:value3 … 这应该很容易,但是由于用户要手动编辑这个文件,我应该如何处理空格,标签,额外的线条跳转等等? 我可以使用Replace删除空格和制表符,但是,是否还有其他“隐形”字符我缺少? 或者我可以删除所有不是字母数字的字符,“:”和行跳转(因为行跳转是将一对与另一对分开),然后删除所有额外的行跳转。 如果是这样,我不知道如何删除“all-except-some”字符。 当然我也可以查看“key1:value1:somethingelse”之类的错误。 但是这样的事情并不重要,因为它显然是用户的错,我只会显示“无效格式”消息。 我只是想处理基本的东西,然后将所有这些放在try / catch块中以防万一出错。 注意:我根本不需要任何空格,即使在键或值内也是如此。

将非可序列化类转换为字节数组

我有一个场景,我在多个非常不同的系统之间同步数据。 (数据本身很相似,但不同系统上的表格格式完全不同。)为了协助这种同步,我有一个数据库表,它存储来自每个系统的对象哈希值以及项目键和其他相关信息。 当来自任一系统的对象的散列改变时,我更新另一个。 我的数据库表看起来像这样。 CREATE TABLE [dbo].[SyncHashes]( [SyncHashId] [int] IDENTITY(1,1) NOT NULL, [ObjectName] [nvarchar](50) NULL, [MappingTypeValue] [nvarchar](25) NULL, [MappingDirectionValue] [nvarchar](25) NULL, [SourceSystem] [nvarchar](50) NULL, [SourceKey] [nvarchar](200) NULL, [SourceHash] [nvarchar](50) NULL, [TargetSystem] [nvarchar](50) NULL, [TargetKey] [nvarchar](200) NULL, [TargetHash] [nvarchar](50) NULL, [UpdateNeededValue] [nvarchar](max) NULL, [CreatedOn] [datetime] NULL, [ModifiedOn] [datetime] NULL, [Version] [timestamp] NOT NULL, [IsActive] [bit] NOT […]

如何在C#中覆盖反序列化

我有一个课程,随着时间的推移会经历一些版本的变化。 作为我的应用程序启动的一部分,来自此类内部的数据被序列化和反序列化。 我遇到的问题是,如果我通过添加更多属性来更新类,然后启动应用程序,旧数据将无法正确加载。 我想要做的是覆盖反序列化步骤,我不介意从xml手动重建对象,因为我有一个版本号存储,可以用它来递归更新对象的版本。 是否有我可以实现的接口,或者我可以在某处设置的属性,以便能够执行此操作? 如果你想不出办法做我想做的事,那还有其他选择吗? 例如我正在加载的xml版本中可能不存在的属性的默认值。