Tag: 序列化

DataContract序列化抽象类

我有一个接口IServiceInfo和一个抽象类ServiceInfo。 有几个inheritance自ServiceInfo的类,如CoreServiceInfo,ModuleServiceInfo等。有一个名为RootService的服务契约,它返回IServiceInfo。 public IServiceInfo GetServiceInfo() { return (IServiceInfo)new CoreServiceInfo(); } 我有序列化问题。 我可以使用ServiceKnownType来标识基类,使用KnownType来标识子类。 问题是我不知道所有的ServiceInfo子节点,因为应用程序可以有从ServiceInfoinheritance的不同子节点的插件,所以我不能告诉序列化器将序列化XML中的所有子节点。 我可以忽略抽象类,但它包含某些常见的实现,所以我需要保留它。 作为一种解决方法,我可以让另一个类说“sampleServiceInfo”并将所有info类转换为sampleServiceInfo并从Service方法返回它,并将KnownType定义为ServiceInfo类。 [KnownType(typeof(sampleServiceInfo))] public class ServiceInfo : IServiceInfo 但这听起来并不是很好的方式。 请建议。 我需要编写自定义序列化程序吗? 是否有任何方法只能序列化base并且当两者都有相同的成员时忽略它?

C#中的XML序列化

我在哪里可以找到关于对象的XMl序列化的好教程? 谢谢。

MSTest在错误的位置寻找DLL

我有一个测试工具正在运行,并且由于Type not resolved而无法运行,更具体地说是一个错误绑定的SerializationException。 我使用fuslogvw来追踪它在寻找DLL的位置而没有找到它,我很困惑为什么它在它所在的位置: === Pre-bind state information === LOG: DisplayName = DavisVision.Common.Data, Version=3.1.0.34, Culture=neutral, PublicKeyToken=c410b32babd148a6 (Fully-specified) LOG: Appbase = file:///C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO 14.0/COMMON7/IDE/COMMONEXTENSIONS/MICROSOFT/TESTWINDOW/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = vstest.executionengine.exe Calling assembly : (Unknown). === LOG: This bind starts in […]

c#最快的序列化机制是什么?

这适用于小型有效载荷。 我期待每100毫秒达到1,000,000,000。 标准的BinaryFormatter非常慢。 DataContractSerializer比BinaryFormatter慢。 对于小对象,协议缓冲区( http://code.google.com/p/protobuf-net/ )似乎比BinaryFormatter慢! 是否有更多的序列化机制应该关注硬编码或开源项目? 编辑:我在内存中序列化然后通过tcp在异步套接字上传输有效负载。 在内存中生成的有效负载是具有ulong标识符的小型双数组(10到500个点)。

WCF中的动态对象不可能?

在WCF(json)中构建响应时,我很确定它不可能使用完全动态的对象,但只是想先在这里仔细检查。 一个理想的反应看起来像: “userTypes” : { “BartSimpson” : { “url” : “foo”, “desc” : “bar” }, “LisaSimpson” : { “url” : “foo”, “desc” : “bar” } } 在“编译”代码中,上述内容可以通过以下架构(稍微伪代码)执行: public class Character{ string url {get;set;} string desc{get;set;} } public class UserTypes{ public Character BartSimpson{get;set;} public Character LisaSimpson{get;set;} } 但我的主要目标是BartSimpson和LisaSimpson没有“编译”,所以我可以拥有任意数量的Character类,在响应中有任何名称/ LisaSimpson 。

克隆Linq对象错误“类型’TestLinq.PersonAddress’的对象图包含循环,如果禁用参考跟踪,则无法序列化。”

我需要使用linq克隆行。 我找到了这个方法: public static T Clone(this T source) { var dcs = new System.Runtime.Serialization .DataContractSerializer(typeof(T)); using (var ms = new System.IO.MemoryStream()) { dcs.WriteObject(ms, source); ms.Seek(0, System.IO.SeekOrigin.Begin); return (T)dcs.ReadObject(ms); } } 但是当试图克隆行时,比如db1.Persons.First()。Clone(); 我得到这个例外:“类型’TestLinq.PersonAddress’的对象图包含周期,如果禁用参考跟踪,则无法序列化。” 注意:我的表包含1个主键,1个唯一索引包含3个字段 请你帮助我好吗 谢谢 哈米德

从.NET调用Java / AXIS Web服务:’return null’问题

我一直在通过所有谷歌,stackoverflow等寻求这个问题。 我找到了很多相关的答案,但不是一个真正的解决方案。 我正在从.NET客户端使用Axis服务,但返回始终为null,无论我发送什么参数,始终为null。 所以我开始看,我试图从SOAPUI中使用它,它工作! 所以我的第一个想法是,.NET做错了,我搜索和搜索,我发现命名空间存在一些问题。 相关文章在这里 所以在此之后,我尝试通过服务引用,Web引用使用服务,使用WSDL.EXE创建代理(它创建得非常好!)并查找所有命名空间,但是所有的lokked很好..我做了一些更改它到命名空间但没有。 然后我发现不仅名称空间是问题,也是数组; 实际上服务返回这样的东西。 0036887 00110 00110 000270 NOMBRE PENDIENTE 2011-02-15 2011-02-15 2012-02-15 03 CARLOS ZARATE JIMENEZ ZAJC720213K98 0449626251463 1 003 237.84 237.84 951.36 .00 0036887 0000000 CARLOS ZARATE JIMENEZ 1972-02-13 1 1 0 00150 SEGURO DE MUERTE ACCIDENTAL 250,000 .00 820.00 039 250,000 .00 00150 SEGURO DE MUERTE ACCIDENTAL […]

使用c#驱动程序将Dictionary插入MongoDB

我处于无法预测MongoDB文档将包含哪些字段的情况。 所以我不能再创建一个具有BsonID类型的_id字段的BsonID 。 我发现创建一个Dictionary(HashTable)并在我的需要中多次添加我的DateTime和String对象非常方便。 然后我尝试将生成的Dictionary对象插入MongoDb,但默认序列化失败。 这是我的类型HashTable的对象(像一个字典,但里面有不同的类型): { “_id”:””, “metadata1″:”asaad”, “metadata2”:[], “metadata3”:ISODate(“somedatehere”)} 而我得到的驱动程序的错误是: Serializer DictionarySerializer期望类型为DictionarySerializationOptions的序列化选项,而不是DocumentSerializationOptions 我用Google搜索,但找不到任何有用的东西。 我究竟做错了什么?

C#反序列化已移动或已重命名的类

如果我在名为“AssemblyA”的程序集中有一个名为“MyClass”的类,并使用.NET的BinaryFormatter将其序列化为一个文件。 然后将“MyClass”的代码移动到名为“AssemblyB”的程序集中,并尝试反序列化该文件,我得到以下“System.TypeLoadException”exception: 无法从程序集’AssemblyA,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’加载类型’AssemblyA.MyClass’。 有没有办法让我表明该课程已被移至AssemblyB? 通过某种属性? 或者是否可以将序列化文件修改为预处理步骤,以将AssemblyA.MyClass中的所有引用更改为AssemblyB.MyClass? 最后,如果这些选项都不可能,是否可以绕过尝试反序列化该类并继续反序列化其余数据?

哪个Json反序列化器呈现IList 集合?

我正在尝试将json反序列化为对象模型,其中集合表示为IList类型。 实际的反序列化在这里: JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Deserialize<IList>( (new StreamReader(General.GetEmbeddedFile(“Contacts.json”)).ReadToEnd())); 在我发布exception之前,我知道你应该知道隐含的转换是什么。 这是Contact类型: public class Contact { public int ID { get; set; } public string Name { get; set; } public LazyList Details { get; set; } //public List Details { get; set; } } 这是ContactDetail类型: public class ContactDetail { public int ID { […]