- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在阅读有关 .NET 中序列化的一些资料,并开始思考将 OnSerializing/OnSerialized/OnDeserializing/OnDeserialized 功能作为属性而不是接口(interface)来实现的主要原因是什么。我可以想到一些利弊,但我可能遗漏了一些重要的东西,所以我想知道什么是最重要的。
支持接口(interface):
在编译时检查方法签名(在签名不正确的方法上使用属性会导致运行时异常)
不能在类级别为单个事件声明两个方法(用相同的属性装饰两个方法会导致运行时异常)
支持属性:
最佳答案
接口(interface)不会那么好,因为接口(interface)之上的层次结构中的每个类都无法自动提供自己的实现,除非:
然后是识别每个类的实现的额外复杂性 - 反射更难。
此外,一旦引入了接口(interface),这意味着层次结构中的所有类都是可序列化的,但情况并非总是如此,也不应该如此。从可序列化基派生非序列化类(在受控情况下)是完全正确的 - 但通过使用接口(interface)或虚拟方法可以有效地防止这种情况。
然后,属性的使用提供了最简洁、最具表现力且实际上最灵活的方式来实现序列化。
关于c# - OnSerializing/OnSerialized/OnDeserializing/OnDeserialized 为什么不是一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316502/
我使用一个可序列化的简单类。它有一个用于反序列化的构造函数: protected MyClass(SerializationInfo info, StreamingContext context) 和
我一直在阅读有关 .NET 中序列化的一些资料,并开始思考将 OnSerializing/OnSerialized/OnDeserializing/OnDeserialized 功能作为属性而不是接口
我有一个类维护对哈希表的引用并序列化/反序列化该哈希表。在调用 SerializationInfo.GetValue 之后,Hashtable 没有完全反序列化,因为反序列化发生在 IDeserial
[OnDeserialized] public static void OnDeserialized(this List self, StreamingContext context) { /
我的所有自定义实体集合都有一个基类,它的一个简单版本是这样的: [Serializable] public class CollectionBase : List where T : IEntity
除this post 中指出的以外我想在 XmlSerializer 开始反序列化之前采取行动(而不是在完成反序列化时) 背景:我有一个实现 INotifyPropertyChanged 的基类。此
我一直在尝试在类中的方法中实现 OnDeserialized 属性。在我使用 XmlSerializer 反序列化该类之后,该方法从未被调用。 即使序列化类是被序列化的主类的成员属性,也会调用 OnD
我正在尝试使用来自 this answer 的 JsonConverter给 Can I specify a path in an attribute to map a property in my
我有一个问题,我在三个小时的大部分时间里一直在努力解决这个问题。我几乎可以肯定我错过了一些非常明显的东西...... 我有一个简单的 XML 文件: 我有一个简
我曾尝试在我的 xml 中实现自动加密和解密,但它并不能正常工作,即数据未加密。可能是什么原因?我的代码如下所示。我正在使用 XmlSerializer 类。谢谢 [Serializable] pub
我们使用 JSON.NET 与 OnDeserialized 属性一起序列化数据,以便在反序列化后执行自定义代码: [OnDeserialized] internal void OnDeseriali
我们使用 JSON.NET 将我们的数据与 OnDeserialized 属性一起序列化以在反序列化后执行自定义代码: [OnDeserialized] internal void OnDeseria
所以我有一些这样的代码。 [DataContract] public class Example { SomeClass _someVar; [OnDeserializing]
是否有与 Java 中的 C# [OnSerialized] 和 [OnDeserialized] 属性等效的属性? 最佳答案 如果您使用默认的 Java 序列化,您可以覆盖用于序列化和反序列化的方法
我正在将现有的 .NET 类库改编为可移植类库。我正在使用配置文件 78(.NET 4.5、Windows Store 8、Windows Phone 8)而不是配置文件 158(它也针对 Silve
我是一名优秀的程序员,十分优秀!