Tag: serialization

从JsonConverter运行默认序列化逻辑

我有一个JsonConverter ,根据实例特定的标志,需要 运行自定义序列化逻辑 运行默认的Json.NET序列化逻辑 如何从JsonConverter运行默认的Json.NET序列化逻辑? 谢谢

ISerializable是否与具有较少字段的以前版本的类向后兼容?

对不起,如果我说这个问题有点奇怪! 基本上,我有一个可序列化的类,在当前时间只有一个字段,但随着我们向系统添加function,将来肯定会获得更多。 序列化过程将用于将实例传递给WCF服务,以及用于从/向文件读取/写入它。 当然,如果我不断用额外的字段更新类,后者可能是一个大问题。 幸运的是,我认为我已经通过在构造函数中的字段设置器周围添加了一个try / catch块来解决了这个问题,我也将对添加到类中的任何其他字段执行此操作。 /// /// Represents launch options supplied to an executable. /// [Serializable] public sealed class ExecutableLaunchOptions : ISerializable { /// /// Creates a new set of executable launch options. /// public ExecutableLaunchOptions() { } /// /// Creates a new set of executable launch options via deserialization. /// /// the […]

在WinRT中序列化BitmapImage

public static async Task SaveFileAsync(string FileName, T data) { MemoryStream memStream = new MemoryStream(); DataContractSerializer serializer = new DataContractSerializer(typeof(T)); serializer.WriteObject(memStream, data); StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting); using (Stream stream = await file.OpenStreamForWriteAsync()) { memStream.Seek(0, SeekOrigin.Begin); await memStream.CopyToAsync(stream); await stream.FlushAsync(); } } public static async Task RestoreFileAsync(string FileName) { T result = default(T); try { […]

在一个程序集中序列化,在另一个程序集中反序列化?

我在两个项目中有相同的类,一个在runtime被发送到另一个进程,该进程必须反序列化该对象并使用它(假设两个对象相同但程序集名称不同,因此它们实际上被解释为两个不同种类)。 根据我的研究,我得出的解决方案由于以下原因而无效。 Json.NET :给我一个例外,即两种类型不兼容(尝试在序列化设置中使用typename.all)。 protobuf-net :要求我在每个地方添加属性或者只是为它提供属性名称(在v2中),由于我的对象太复杂,这对我来说都是不可能的。 BinaryFormatter :与protobuf->吨属性相同的原因。 Use Common Assembly :由于某些与我的项目架构相关的原因,我不能。 那么是否有任何简单的方法来序列化一种类型,然后将其反序列化为另一种类型(实际上是同一个类但在不同的程序集中)?

序列化/反序列化和非默认构造函数

考虑这个课程: [Persistable] public sealed class FileMoveTask : TaskBase { [PersistMember] public string SourceFilePath { get; private set;} [PersistMember] public string DestFilePath { get; private set;} public FileMoveTask(string srcpath, string dstpath) { this.SourceFilePath = srcpath; this.DestFilePath = dstpath; //possibly other IMPORTANT initializations } //code } 我可以通过使用属性PersistMember序列化所有成员来持久保存此类的对象。 但是在反序列化过程中我遇到了一些问题(设计问题)。 特别是,问题在于构造函数中可能存在的“可能的其他重要初始化” ,并且程序员可能决定不会使少数成员可持久化(即不PersistMember添加PersistMember )可能因为这没有意义。 在这种情况下,我如何将对象反序列化为完全相同的状态? 我想,这个问题归结为:我如何调用非默认构造函数,将相同的参数传递给它,之前传递过? 有没有办法做到这一点? 我们可以制定一些可以由编译器强制执行的规则(一种元编程)吗? 构造函数属性可以在这帮助吗?

序列化问题:System.UnauthorizedAccessException

我收到此错误:mscorlib.dll中出现未处理的“System.UnauthorizedAccessException”类型exception 附加信息:访问路径’C:\ Users \ Storm Kiernan \ Desktop(NEW)Archetype Development Kit \ Laboratory \ Laboratory \ bin \ x86 \ Debug \ lol.dataf’被拒绝。 从尝试通过此代码序列化任何对象: public static void BinarySerialize(this T t, string path) { DirectoryInfo directoryInfo = new DirectoryInfo(path); directoryInfo.EnsureDirectory(); using (FileStream stream = new FileStream(directoryInfo.FullName, FileMode.OpenOrCreate)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, t); } } […]

如何序列化类实现了两个具有相同基础接口的接口

我正在尝试使用protobuf v2序列化一个类A实现接口B和C.并且B和C都来自D. [ProtoBuf.ProtoContract] [ProtoBuf.Includes(101, typeof(B)) [ProtoBuf.Includes(101, typeof(C)) interface D{…} [ProtoBuf.ProtoContract] [ProtoBuf.Includes(101, typeof(A)) interface B:interfae D{…} [ProtoBuf.ProtoContract] [ProtoBuf.Includes(101, typeof(A)) interface C:interface D { … } [ProtoBuf.ProtoContract] class A: interface B, interface C{…} 将返回错误:类型只能参与一个inheritance层次结构。

nativeGetUninitializedObject实际存在于何处?

我对一些序列化的东西感到好奇,所以我去了FormatterServices ,发现了一个名为nativeGetUninitializedObject的方法,它实际上处理给定类型的初始化(不调用custructor)。 此方法使用extern关键字和以下属性进行修饰: [MethodImpl(MethodImplOptions.InternalCall), SecurityCritical] 我想知道:这种方法实际存在于何处? CLR调用什么代码来获取给定类型的初始化(不调用构造函数)?

使用自定义流(IEnumerable )

我正在使用Stream的自定义实现,它将IEnumerable流式传输到流中。 我正在使用此EnumerableStream实现来执行转换。 我正在使用它在流模式下通过WCF执行流式传输。 我能够将IEnumerable转换为流而没有问题。 有一次,我在客户端,我可以反序列化并获取所有数据,但是我无法找到停止在我的流上循环的条件。 我越来越: System.Runtime.Serialization.SerializationException:解析完成之前遇到的Stream of Stream。 这是我想要实现的示例: class Program { public static void Main() { var ListToSend = new List<List>(); var ListToReceive = new List<List>(); ListToSend = SimulateData().ToList(); using (Stream stream = GetStream(ListToSend)) { var formatter = new BinaryFormatter(); while (stream.CanRead || 1 == 1 || true…) // What should I put […]

是否有CSV Serializer这样的东西? (类似于XmlSerializer)

我正在编写序列化和反序列化CSV文件,我想知道是否有一个现有的库,在概念上类似于XmlSerializer,它可以声明性地定义对象,并(de)将它们序列化到文件或流中。 我已经环顾四周但没有找到任何专注于序列化的东西。 我已经有了非常可靠的代码来解析每个RFC 4180的CSV文档,但真正有用的是序列化部分。 我不想要的只是一个解析器,建议使用String.Split()等。 那里有一个现有的项目,还是我应该建一个? 奖励礼仪问题:如果我最终滚动自己的序列化程序,是否适合用codeplex项目的链接回答这个问题?