C#Serialize expression

时间:2015-07-14 15:49:50

标签: c# .net database linq serialization

我想序列化表达式。 (创建IQuery客户端 - >将其发送到服务器 - >执行 - >将结果返回给客户端)

但老实说,表达式不可序列化。使用gnupacket Serialize.Linq(https://github.com/esskar/Serialize.Linq)我仍然有问题。将抛出以下异常:

  

转换类型时出错:Der Typ'Prog.DB.Query`1 [[Prog.Database.User,   Prog.Database,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = null]]'mit dem Datenvertragsnamen   'ArrayOfUser:http://schemas.datacontract.org/2004/07/Prog.Database'   wird nicht erwartet。 Verwenden Sie ggf. einen DataContractResolver,   oderfügenSiealle unbekannten Typen statisch der Liste der bekannten   Typen hinzu,beispielsweise mithilfe des KnownTypeAttribute-Attributs   oder indem Sie sie zur Liste der bekanntenTypenhinzufügen,die an   DataContractSerializerübergebenwird。

我用

添加了所有已知类型

JsonSerializer js = new JsonSerializer(); js.AddKnownTypes(Assembly.GetAssembly(typeof(Prog.Database.User)).GetTypes().Where(t => !ignoreList.Contains(t)).ToList());

添加js.AddKnownType(typeof(List<Prog.Database.User>));会引发另一个异常

  

转换类型时出错:Der Typ   “System.Collections.Generic.List`1 [LISA.Database.User]”kann der Liste   bekannter Typennichthinzugefügtwerden,da bereits ein anderer Typ   “LISA.Database.User []”mit demselben Datenvertragsnamen   “schemas.datacontract.org/2004/07/LISA.Database:ArrayOfUser”   vorhanden ist。 Wenn verschiedene Auflistungen eines bestimmten Typs   vorhanden sind,z。 B. List und Test [],könnennichtbeide als   bekannteTypenhinzugefügtwerden。 FügenSieggf. nur einen dieser   Typen der Liste der bekannten Typen hinzu。

数据库是可序列化的(序列化模式:单向),也设置了[DataMember] + [DataContract]属性。没有表达式的序列化(只是数据库对象)工作正常。

0 个答案:

没有答案