接口和抽象类中的 Xml 属性

2024-03-07

今天发现了一件让我很困惑的事情:

1.如果我有这个:

public interface INamed
{
    [XmlAttribute]
    string Name { get; set; }
}

public class Named : INamed
{
    public string Name { get; set; }
}

它提供以下输出(名称属性序列化为元素):

<Named>
  <Name>Johan</Name>
</Named>

2.如果我有这个:

public abstract class NamedBase
{
    [XmlAttribute]
    public abstract string Name { get; set; }
}

public class NamedDerived : NamedBase
{
    public override string Name { get; set; }
}

XmlSerializer 抛出 System.InvalidOperationException

成员“NamedDerived.Name”隐藏继承成员“NamedBase.Name”, 但具有不同的自定义属性。

我用于序列化的代码:

[TestFixture] 
public class XmlAttributeTest
{
    [Test]
    public void SerializeTest()
    {
        var named = new NamedDerived {Name = "Johan"};
        var xmlSerializer = new XmlSerializer(named.GetType());
        var stringBuilder = new StringBuilder();
        using (var stringWriter = new StringWriter(stringBuilder))
        {
            xmlSerializer.Serialize(stringWriter, named);
        }
        Console.WriteLine(stringBuilder.ToString());
    }
}

我的问题是:

我做错了吗?如果是,在接口和抽象类中使用 xml 属性的正确方法是什么?


属性不会在重写的属性上继承。您需要重新声明它们。 此外,在第一个示例中,行为不是“预期”行为,因为您在接口级别声明了 XmlAttribute,但序列化的 xml 包含该值作为元素。因此,接口中的属性被忽略,只有从实际类中获取的信息才重要。

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

接口和抽象类中的 Xml 属性 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 无法将 std::min 传递给函数,std::min 的副本有效

    Passing std min函数无法编译 我复制了 libcpp 声明std min进入我的源文件并且它可以工作 std 版本有什么问题 clang 和 gcc 也会发生同样的情况 在 Godbolt 上测试 https godbolt
  • c# 从另一个类中的另一个静态事件引发事件

    需要帮助从另一个班级调用事件 我有已声明事件的课程 public class MxPBaseGridView GridView public event AddNewItemsToPopUpMenuEventHandler AddNewIt
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 有什么方法可以重载 C# 中的扩展方法吗?

    我有以下模型模式 public abstract class PARENTCLASS public class CHILD A CLASS PARENTCLASS public static class EXTENSION public s
  • 如何在win32中使用GetSaveFileName保存文件?

    我编写此代码是为了获取 fileName 来保存我的文件 include stdafx h include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • 使用 Arrays.sort() 对并行数组进行排序

    是否可以使用对数组进行排序Arrays sort 然后将另一个相关数组放置在与排序数组相同的位置 例如 String arrNames new String 5 String arrCellNo new String arrNames le
  • SQL:连接表后 SUM() 函数返回错误值

    我目前正在开发一个数据库项目 并且在连接表方面遇到一些问题 初始情况是 四张桌子 任务 t 50000 条记录 项目 p 1000 条记录 Workson w 30000 条记录 员工 e 10000 条记录 表 w 有一个名为 WORKL
  • 将元素添加到节点(如果不存在)

    使用 xslt 3 我尝试插入元素 PROPERTY 如果每个 RECORD 节点尚不存在 table table
  • 缓存和记忆化有什么区别?

    我想知道之间的实际区别是什么caching and memoization is 在我看来 两者都涉及避免通过存储数据来重复调用函数来获取数据 两者的核心区别是什么 记忆化是一种特定形式的缓存 涉及根据函数的参数缓存函数的返回值 缓存是一个
  • 如果IE 6,我想产生警告并免费下载其他浏览器图标

    我的网站想打开IE7及以上版本 如果是IE 6 我想产生警告并免费下载其他浏览器图标 这可能吗 您可以获得一些不需要服务器端脚本的示例ie6nomore com http www ie6nomore com code samples htm
  • Objective-C:在 SpriteKit 中向计时器添加 10 秒

    我使用了别人的代码在 SpriteKit 中编写计时器 并对其进行了一些调整 我的代码如下所示 void createTimerWithDuration NSInteger seconds position CGPoint position
  • 如何用OPENCV得到最小外接圆?

    我在用着cv minEnclosingCircle 为了得到精确地演变我的轮廓的最小圆 但我得到了一个更大的圆 换句话说 我正在尝试得到这样的东西 https upload wikimedia org wikipedia commons t
  • ClassLoader getResourceAsStream 返回 null

    我的项目目录结构 在Eclipse中 MyProject src gt source directory on Eclipse s classpath buildpath com me myapp Driver myconfig txt I
  • Django - 将参数传递给内联表单集

    我在用inlineformset factory使用中介考勤模型为客户端和会话之间的多对多关系创建字段 我的视图文件中有以下内容 AttendanceFormset inlineformset factory Session Attenda
  • Canvas.drawText() 不会在 Android 上呈现大表情符号

    Canvas drawText 不渲染表情符号在 Android 上超过一定的字体大小 Correct render at somewhere below 256 px Incorrect render at above 256 px 有一
  • 如何从 MVC/Razor 页面将参数传递到顶级服务器端 blazor 组件?

    将 Blazor 组件添加到现有 MVC 或 Razor 页面时 能够将参数传递到 Blazor 组件中非常有用 例如将 MVC 页面的 URL 中的参数 例如 ID 传递到组件上 直到 Core 3 Preview 9 服务器渲染组件才可
  • 快速添加按钮到SCNNode

    我正在研究 ARKit 和图像检测 现在我有一个应用程序可以检测图像并将平面放置在屏幕上检测到的对象所在的位置 如何添加可点击的元素 例如飞机上的按钮 我想在每个检测到的对象上都有一个单击事件 这就是我的渲染器函数的样子 func rend
  • ASP.NET MVC 2:查看子文件夹?

    在我看来 当我使用视图和控制器时 控制器仅处理各自文件夹的第一级 Controllers MembersController Views Members 控制器应该如何处理子文件夹 Views Members Business 控制器isn
  • Mono 中的 P/Invoke

    什么是当前状态 of Mono http www mono project com 的平台调用实现Linux and on Solaris 工作 可用且稳定 它经过了充分的测试 因为相当多的 mono 自己的低级功能必须通过它编组到底层操作
  • 为什么日期之间的减法会返回 Rational 类型?

    我正在尝试对日期执行减法运算 date sent Date parse 2013 01 01 gt Tue 01 Jan 2013 date now Date today gt Wed 04 Sep 2013 days date now d
  • PHP 中的 undefined 相当于什么?

    我的假设随后是基于假设的问题 JavaScript 有null and undefined 您可以将变量设置为null 表示它没有值 或者您可以将其设置为undefined 这意味着不知道它是否有值 它只是根本没有设置 PHP has nu
  • akka-http 具有多种路由配置

    快速背景 我正在通过一些示例学习 Akka HTTP 堆栈来创建新的 REST 项目 完全非 UI 我一直在使用和增强Akka HTTP 微服务示例 http www typesafe com activator template akka
  • Java / 重构 switch case

    我正在尝试重构下一个案例 class Gen public void startClick A a B b List
  • Ubuntu 上的 Giza++ 有正确的安装指南吗?

    我看到适用于 Giza 的正确安装指南 但不适用于 Giza 安装前者的说明 可在此处找到 http giza sourceforge net documentation installation html http giza source
  • 接口和抽象类中的 Xml 属性

    今天发现了一件让我很困惑的事情 1 如果我有这个 public interface INamed XmlAttribute string Name get set public class Named INamed public strin