如何使用自定义 IXmlSerialized 作为 XmlAttribute?

2023-11-23

我实施IXmlSerializable对于以下将 RGB 颜色值编码为单个字符串的类型:

public class SerializableColor : IXmlSerializable
{
    public int R { get; set; }
    public int G { get; set; }
    public int B { get; set; }

    public XmlSchema GetSchema()
    {
        return null;
    }

    public void ReadXml(XmlReader reader)
    {
        var data = reader.ReadString();
        reader.ReadEndElement();
        var split = data.Split(' ');
        R = int.Parse(split[0]);
        G = int.Parse(split[1]);
        B = int.Parse(split[2]);
    }

    public void WriteXml(XmlWriter writer)
    {
        writer.WriteString(R + " " + G + " " + B);
    }
}

由于它是单个字符串,因此我想将其存储为属性以节省空间。但是一旦我添加[XmlAttribute]对于我的财产,我收到以下异常:

{“无法序列化 SerializedColor 类型的成员“Color”。XmlAttribute/XmlText 不能用于对实现 IXmlSerialized 的类型进行编码。”}

有没有办法让它也作为属性工作?


遗憾的是(奇怪的是)根据此链接这是不可能的http://connect.microsoft.com/VisualStudio/feedback/details/277641/xmlattribute-xmltext-cannot-be-used-to-encode-types-implementing-ixmlserialized

为了解决该问题,我当前使用 XmlIgnore 属性来隐藏复杂属性并通过另一个属性将其公开为字符串

public class MyDto
{
    [XmlAttribute(AttributeName = "complex-attribute")]
    public string MyComplexPropertyAsString
    {
        get { return MyComplexMember.ToString(); }
        set { MyComplexMember.LoadFromString(value); }
    }
    [XmlIgnore]
    public MyComplexMember At { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用自定义 IXmlSerialized 作为 XmlAttribute? 的相关文章

  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 从 XPath 中的选择中排除特定标记

    我知道这是一个简单的问题 但我无法弄清楚 考虑以下简单的 XML 文档
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 使用 XSLT 检查空 XML 元素

    我有以下 XML
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • C#:如何使用 SHOpenFolderAndSelectItems [重复]

    这个问题在这里已经有答案了 有人可以举例说明如何使用 shell 函数吗SH打开文件夹并选择项目 http msdn microsoft com en us library bb762232 VS 85 aspx来自 C 我不太明白如何使用
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • SSBO 是更大的 UBO?

    我目前正在 OpenGL 4 3 中使用 UBO 进行渲染 以将所有常量数据存储在 GPU 上 诸如材料描述 矩阵等内容 它可以工作 但是 UBO 的小尺寸 我的实现为 64kB 迫使我多次切换缓冲区 减慢渲染速度 我正在寻找类似的方法来存
  • C# - 为什么我需要初始化 [Out] 参数

    我有几个从本机 dll 导入的方法 使用以下语法 internal static class DllClass DllImport Example dll EntryPoint ExampleFunction public static e
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • 最后从同一类中的其他构造函数调用构造函数

    我在这里读到可以调用另一个构造函数从同一类中的另一个构造函数调用构造函数 https stackoverflow com questions 829870 calling constructor from other constructor

随机推荐

  • Jenkins Gradle 集成:调用 Gradle 与使用 Gradle Wrapper 选项

    我刚刚开始在我的项目中使用 Jenkins for CI 和 Gradle 构建工具 I found 使用 Gradle 和 Jenkins 构建持续交付管道我不明白为什么作者建议 始终使用包装器 c 编号 120幻灯片 为什么这比直接涉及
  • 在全局范围内重新定义指针

    In 这个问题我对 C 的这个看似基本的方面感到非常困惑 考虑这两行代码 int ptr ptr 2 gcc 将发出以下警告 main cpp 4 1 warning data definition has no type or stora
  • Google 地图 API v3 放置搜索 - 将另一个参数传递给回调函数

    我正在使用 Google 地图地方 API v3 返回许多 类型 的地点 每个地点由地图上的不同标记表示 我创建一个 google maps places PlacesService 对象 然后为每个地点类型调用一次 搜索 方法 每次 我都
  • 异步任务 获取 VS HttpResponseMessage 获取

    我需要您在以下方面提供帮助 近一个月来 我一直在阅读有关 Tasks 和 async 的内容 我想尝试在一个简单的 Web API 项目中应用我新获得的知识 我有以下方法 并且它们都按预期工作 public HttpResponseMess
  • 如何在 PHP 中解析和处理 HTML/XML?

    如何解析 HTML XML 并从中提取信息 Answer recommended by PHP Collective 原生 XML 扩展 我更喜欢使用其中之一原生 XML 扩展因为它们与 PHP 捆绑在一起 通常比所有第 3 方库更快 并为
  • 比较 android 中的语音 wav 或语音标签(语音命令)API

    我正在开发一个应用程序 我需要某种方法来比较两个语音是否匹配 我知道语音识别器是一种方法 但因为 我认为 它需要首先将语音转换为字符串 所以除了语音识别器支持的语言之外 不太适合其他语言 有什么想法吗 就像过去的电话一样 语音标签只是将语音
  • 用 C 语言模仿 Python 的 strip() 函数

    我最近开始用 C 语言开发一个小玩具项目 并且一直在摸索模仿 python 字符串对象的 strip 功能的最佳方法 阅读 fscanf 或 sscanf 发现字符串被处理到遇到的第一个空格 fgets 也没有帮助 因为我仍然有换行符 我确
  • HTML5 History API 后退按钮,部分页面加载

    为了提高网站的性能 响应能力 我使用 AJAX replaceState pushState 和 popstate 侦听器实现了部分页面加载 我基本上将页面的中心部分 HTML 存储为历史记录中的状态对象 单击链接时 我仅从服务器请求页面的
  • 无法使用 Cocoapods 动态框架导入 RestKit

    我安装了 cocoapods 的预发布版本 0 26 并尝试安装最新版本的 RestKit 在我的podfile我已经打开了use frameworks 强制 cocoapods 使用动态框架的标志 Putting import RestK
  • SQL Server触发器-使用deletetime将删除的记录插入到另一个表中

    目前我有一个 Item 表和一个 ItemWaste 表 两个表都会有一些字段 例如 名称 金额等 但是 ItemWaste 表还会多一个字段 即 TimeWasted 我希望自动将 Item 表中的 DELETED 项目插入到 ItemW
  • 如何在Qt中实现下拉单词建议?

    假设我有 10 个名字QListWidget 这是隐藏的 和一个aQLineEdit 现在 如果我在 编辑 行中输入字母 a 它应该显示列表小部件中以字母 A 开头的所有名称的下拉列表 用户可以使用鼠标或键盘进行选择 因为会有一个垂直滚动条
  • 将 JSON 字符串解码为类对象

    private func createWeatherObjectWith json Data x Any Type completion escaping data Any error Error gt Void do let decode
  • 指针和数组的区别[重复]

    这个问题在这里已经有答案了 可能的重复 char str STRING 和 char str STRING 之间的区别 C 指针和数组的区别 Hi 谁能告诉我以下陈述之间的区别 char p This is a test char a Th
  • android 中如何知道某个应用程序将被卸载?

    我想实现像 AppLock 应用程序正在做的事情 如果在其设置中设置为锁定应用程序卸载 安装 则在卸载任何应用程序时 恰好单击卸载按钮 会出现一个锁屏 要求输入密码 图案 只有输入密码后 用户才可以卸载应用程序 当一个人得到的意图是什么 或
  • 在事件处理程序中使用它

    我试图寻找它的意义thisDOM 级别 3 事件规范中事件处理函数内的关键字 根据我的实验this指的是event currentTarget object 标准中是否提到了这种行为 根据 JavaScript 权威指南 一书this指的是
  • iOS Safari 滚动到顶部在某些页面上不起作用。为什么?

    免责声明 该网站同时已更新 新版本的设计不再出现此问题 在我建立的一个新网站上 我注意到 Safari iOS 5 中有一个奇怪的怪癖 通常 您可以点击 Safari 顶部的黑条来滚动到任何网页的顶部 在我的新网站上 这适用于主页 但不适用
  • 如何在经典 ASP 中使变量静态(或“全局”)?

    我想让我的变量静态或 全局 因此与 NET 中的静态效果相同 访问它的每个会话都会得到相同的结果 如果一个会话修改它 它也会影响其他所有人 如何在经典 ASP 中实现这一目标 如果您想要一个可在应用程序范围内访问的变量 则可以使用应用程序对
  • 在 numpy 数组中设置空值

    如何根据条件将 numpy 数组中的某些值设为 null 我不明白为什么在不满足条件的情况下我最终会得到 0 而不是 null 或空值 b 是一个填充有 0 和 1 值的 numpy 数组 c 是另一个完全填充的 numpy 数组 所有阵列
  • Visual Studio 2008 中的 WatiN - 第二个测试方法失败

    当尝试在 Visual Studio 2008 中运行一个非常简单的 WatiN 2 0 CTP3 测试时 我发现第一个测试总是执行得很好 第二个测试方法似乎破坏了 IE 对象中的某些内容 产生以下异常 测试方法 testProject W
  • 如何使用自定义 IXmlSerialized 作为 XmlAttribute?

    我实施IXmlSerializable对于以下将 RGB 颜色值编码为单个字符串的类型 public class SerializableColor IXmlSerializable public int R get set public