我可以将匿名类型序列化为 xml 吗?

2023-11-25

我知道匿名类型被编译器标记为私有,并且属性是只读的。有没有办法将它们序列化为 xml(无需反序列化)?它使用 JSON,我怎样才能用 XML 做到这一点?


像这样的事情应该让你开始......

class Program
{
    static void Main(string[] args)
    {
        var me = new
        {
            Hello = "World",
            Other = new
            {
                My = "Object",
                V = 1,
                B = (byte)2
            }
        };

        var x = me.ToXml();
    }
}
public static class Tools
{
    private static readonly Type[] WriteTypes = new[] {
        typeof(string), typeof(DateTime), typeof(Enum), 
        typeof(decimal), typeof(Guid),
    };
    public static bool IsSimpleType(this Type type)
    {
        return type.IsPrimitive || WriteTypes.Contains(type);
    }
    public static XElement ToXml(this object input)
    {
        return input.ToXml(null);
    }
    public static XElement ToXml(this object input, string element)
    {
        if (input == null)
            return null;

        if (string.IsNullOrEmpty(element))
            element = "object";
        element = XmlConvert.EncodeName(element);
        var ret = new XElement(element);

        if (input != null)
        {
            var type = input.GetType();
            var props = type.GetProperties();

            var elements = from prop in props
                           let name = XmlConvert.EncodeName(prop.Name)
                           let val = prop.GetValue(input, null)
                           let value = prop.PropertyType.IsSimpleType()
                                ? new XElement(name, val)
                                : val.ToXml(name)
                           where value != null
                           select value;

            ret.Add(elements);
        }

        return ret;
    }
}

...生成的 xml ...

<object>
  <Hello>World</Hello>
  <Other>
    <My>Object</My>
    <V>1</V>
    <B>2</B>
  </Other>
</object>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以将匿名类型序列化为 xml 吗? 的相关文章

  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • 由带有换行符的 DOMDocument 生成的 XML

    我正在使用 PHP DOMDocument 创建 XML 文件 并且这些 XML 文件不能包含换行符 但是当我使用该方法时 保存 XML 生成的 XML 在定义和初始标记之间有一个换行符 如下所示
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • Unity 2.0 和处理 IDisposable 类型(特别是使用 PerThreadLifetimeManager)

    我知道类似的问题被问过好几次 例如 here https stackoverflow com questions 987761 how do you reconcile idisposable and ioc here https stac
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n
  • 在单个BackgroundWorker上运行多个DoWork函数是否安全?

    我正在使用已建立的代码库 并且我想将一些正在完成的工作移至单独的线程 目前代码的结构方式我想做一些类似的事情 var backgroundWorker new BackgroundWorker backgroundWorker DoWork
  • Resharper 中的警告“未使用纯方法的返回值”

    我有一个关于我正在工作的 c 项目中从 Visual Studio 中的 Resharper 收到的警告的快速问题 警告是 不使用纯方法的返回值 发生这种情况的方法如下 private static bool FilePathHasInva
  • 为什么在此实例中 System.MidpointRounding.AwayFromZero 不进行舍入?

    在 NET 中 为什么System Math Round 1 035 2 MidpointRounding AwayFromZero 产量 1 03 而不是 1 04 我觉得我的问题的答案就在标有 来电者须知 的部分中http msdn m
  • 在 .NET 中使用 NTFS 压缩来压缩文件夹

    我想在 NET 中使用 NTFS 压缩来压缩文件夹 我发现这个帖子 http bytes com groups net c 262874 making folder compressed 但它不起作用 它抛出异常 无效参数 Director
  • 调试 xslt 的工具

    我有一个 Java servlet 它生成 XML 使用 XSLT 样式表对其进行翻译 然后显示生成的 HTML 这是我第一次使用 XSLT 调试 XSLT 的好方法是什么 我也有 或可以获得 一些示例 XML 文件来应用转换 但我什至不确
  • 当向数据库表添加一列时,如何让 datagridview 显示更改?

    我在 Visual Studio 的项目中创建了一个数据集 该数据集指向我的数据库中的一个表 然后将 datagridview 控件绑定到它 现在我打开数据库并向数据库中的表添加另一列 然后我打开数据集并更新其配置以包含更改 然后我想更新
  • 当您在 C# 中将枚举强制转换为 int 时,幕后会发生什么?

    我正在寻找用 C 实现模拟器 我考虑的事情之一是创建与其字节值关联的所有操作码的枚举 但是 我想知道考虑到我需要多久访问该字节值才能执行诸如将其用作查找表中的索引等操作 这是否不是一个好主意 当你将 enum 转换为 int 时 会发生什么
  • 保持树视图的滚动位置

    如何在 NET 应用程序中维护树视图控件的滚动位置 例如 我有一个树视图控件 并经历了向其中添加各种节点并将它们固定在底部的过程 在此过程中 我可以滚动树视图并查看不同的节点 问题是当该过程完成时 树视图滚动到最底部 看来调用 treeno
  • 如何引用 dotNet Core 项目?

    我想将 dotNet Core 项目引用到 WPF 项目 我的 WPF 项目使用 v4 6 2 dotNet Framework 我的 dotNet Core 项目使用 v1 6 dotNet Standard 当我尝试引用它时 出现此错误
  • 在 C# 中实例化 python 类

    我已经用 python 编写了一个类 我想通过 IronPython 将其包装到 net 程序集中 并在 C 应用程序中实例化 我已将该类迁移到 IronPython 创建了一个库程序集并引用了它 现在 我如何真正获得该类的实例 该类看起来
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • WCF 版本控制枚举

    我开始编写一些需要向前兼容和版本控制的 WCF 数据协定 我一直在阅读 MSDN 文章here http msdn microsoft com en us library ms733832 aspx 并且想知道是否有人对有关枚举的第 14
  • 外部组件中的控制器上的 404

    我在解决 Asp Net MVC 4 项目中的 404 响应时遇到问题 它是在 VS2012 中构建的 目标版本为 4 5 我已将预编译的视图和控制器内置到独立的 DLL 中 我能够动态加载 DLL 并从我的核心项目中检查它们 甚至调用它们
  • XPath 选择具有特定属性值的元素?

    我在使用 XPath 选择节点时遇到问题 我将展示一个示例 由于实际数据量很大 xml 文件被缩短了 这是 XML 的子集
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read

随机推荐

  • 为什么两个单独创建的不可变对象具有相同的 id,而可变对象具有不同的 id,但两者都引用相同的值? [复制]

    这个问题在这里已经有答案了 两个单独创建的可变列表具有不同的 id Python SHELL 可变 gt gt gt mylist spam eggs gt gt gt yourlist spam eggs gt gt gt id myli
  • Vim 替换期间增量搜索

    我不擅长写 vim 正则表达式 每当我编写一个程序来进行替换时 第一次都不会起作用 因为我最终不可避免地会编写一些 Perl 而不是 vim 的东西 当进行简单搜索时 我的表现要好得多 因为我有incsearch打开后我可以实时查看我的模式
  • 在c#中检测wifi连接

    我正在开发一个 asp net 或 winforms 应用程序 该应用程序应该检测 wifi 连接和强度 目的是为现场代理提供一个指示 表明他们可以连接到我们的总部 我需要什么来检测 wifi 连接 在 ASP NET 中无法做到这一点 A
  • 将 NodeList 转换为数组

    我很难转换NodeList到 IE 8 中的数组 以下内容在 Chrome 中完美运行 但在 IE 8 中toArray 不被认为是有效的 NodeList prototype toArray function var a for var
  • AWSGlue AccessDeniedException,状态代码 400

    我正在尝试为数据工程项目构建数据管道 在S3 Glue Athena等的帮助下 我在设置胶水爬虫以对数据进行索引时陷入困境 即使我根据需要设置了角色 但仍然出现以下错误 service AWSGlue statusCode 400 erro
  • 为什么“rgb (224, 226, 213)”是无效的属性值?

    为什么任何浏览器都不能应用此颜色 RGB 规则 HTML
  • Instagram 位置/搜索端点不支持分页,这是否正确?

    我读过几篇关于 Instagram API 一次仅返回 20 个结果的帖子 在很多情况下 人们建议您只需使用分页信息中返回的下一个 URL 即可 我对此没意见 但是返回的 JSON https api instagram com v1 lo
  • 如何查找R包中的所有函数?

    查找包中关联的所有函数的最佳方法是什么 我目前正在浏览 caTools 包 如果我做 caTools or caTools我只是要搜索调用该函数的函数 而不是包中的函数 有没有一种简单的方法可以访问 R gui 中的所有功能 有什么好的方法
  • 集合 <__NSArrayM: 0x76c11b0> 在枚举时发生了变化

    我对 obj c 比较陌生 所以我一定错过了一些东西 但是当敌人与墙壁碰撞时我的程序崩溃了 我已经找到了将敌人从循环中移除的位置 而在循环中 但对于我的一生 我不知道如何解决它 我的代码如下 错误是 allEnemies removeObj
  • getChildView 没有被调用

    我正在制作一个包含自定义 ExpandableListView 适配器的菜单 尽管尝试将我的代码与 API 示例和我在网上看到的任何其他示例 包括多个密切相关的 SO 问题 进行匹配 但我仍然无法使其工作 我知道正在使用适配器 因为正在显示
  • 如何防止rawproto文件生成或自动删除它们?

    Android gradle 插件生成大量 rawproto文件在build android profile目录 它们有什么用 有没有办法阻止这种疯狂或自动删除它们 我已经被它困扰了很长一段时间 现在我注意到有 GB 的内存占用了我小小的
  • 获取 java.rmi.UnmarshalException:无法识别的方法哈希:远程对象不支持方法

    我是 RMI 技术的新手 当我运行 rmi 客户端程序时 出现异常 java rmi UnmarshalException 无法识别的方法哈希 远程对象不支持方法 我使用的是jdk1 5 远程方法的参数是序列化对象 这些是服务器代码 这是远
  • javascript 音频加载

    我做了一个 javascript 音频测试 所有函数都可以在 Opera FF 和 Chrome 中使用 除了 audio oncanplaythrough 和 audio onend 这两个函数在 Chrome 上不起作用 a href
  • Android 设备有唯一的 ID 吗?

    Android 设备是否有唯一的 ID 如果有 使用 Java 访问它的简单方法是什么 Settings Secure ANDROID ID返回 Android ID 作为每个用户都是唯一的64 位十六进制字符串 import androi
  • 重命名多个匹配模式的目录

    我想重命名 basedir 下与名称匹配的所有目录 例如 In basedir 我有 foo bar blah my bar foo some bar foo1 other foo bar 我想重命名所有匹配的目录bar 但我想保留前缀部分
  • 为什么 MATLAB 中的 24.0000 不等于 24.0000?

    我正在编写一个程序 需要删除存储在矩阵中的重复点 问题是 当检查这些点是否在矩阵中时 MATLAB 无法识别矩阵中的它们 尽管它们存在 在下面的代码中 intersections函数获取交点 points 1 points 2 inters
  • Python xlrd:如何转换提取的值?

    好吧 我有一个问题 从我在这里发现的内容来看 我觉得我已经回答了好几次了 然而 作为一个新手 我无法真正理解如何执行真正的基本操作 事情是这样的 我有一个 xls当我使用 xlrd 来获取我只是使用的值时sh cell 0 0 假设 sh
  • 程序“node.exe”无法在 Visual Studio 代码中运行

    当我在 CMD 中运行节点代码时 它工作正常 但在 VS code 终端中出现错误 gt PS D MyApps NodeSession gt npm v 6 4 1 gt PS D MyApps NodeSession gt node v
  • Django AttributeError“datetime.date”对象没有属性“utcoffset”

    我是 Django 的新手 如果问题的解释看起来很奇怪 我很抱歉 我在 Django 项目中创建了一个博客应用程序 模型 py from django db import models class Blog models Model tit
  • 我可以将匿名类型序列化为 xml 吗?

    我知道匿名类型被编译器标记为私有 并且属性是只读的 有没有办法将它们序列化为 xml 无需反序列化 它使用 JSON 我怎样才能用 XML 做到这一点 像这样的事情应该让你开始 class Program static void Main