Error System.MissingMethodException:没有为'System.Linq.Expressions.Expression`1]类型定义无参数构造函数。

问题描述 投票:1回答:1
我想为我的Web服务创建动态表达式,以允许客户端应用程序传递动态查询以根据需要过滤数据。为此,我试图在C#/ .NET中对

Expression

进行序列化/反序列化。客户端应用程序可以传递到我的Web服务中。不幸的是,当我尝试反序列化表达式时,出现以下错误。System.MissingMethodException: No parameterless constructor defined for type of 'System.Linq.Expressions.Expression`1[[System.Func`2[[Common.Entities.ModuleEntityAdmins, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]
我正在反序列化的类包含无参数的构造函数,并使用适当的

[DataContract]

[DataMember]属性进行修饰。[DataContract] public class ModuleEntityAdmins { [DataMember] public List<ModuleEntityAdmin> Modules { get; set; } /// <summary> /// Default constructor /// </summary> public ModuleEntityAdmins() { this.Modules = new List<ModuleEntityAdmin>(); } } [DataContract] public class ModuleEntityAdmin { [DataMember] public int Id { get; set; } [DataMember] public bool Active { get; set; } [DataMember] public string Name { get; set; } /// <summary> /// Default constructor /// </summary> public ModuleEntityAdmin() { } }
我创建一个简单的

Expression

以返回该类的单个实例。
Expression<Func<ModuleEntityAdmins, ModuleEntityAdmin>> expr1 = m => m.Modules.Find(q => q.Id == 1);
我使用以下函数序列化

表达式

public string SerializeObject(object objtoserialize) { return JsonConvert.SerializeObject(objtoserialize); }
此时一切都很好。

然后我使用以下函数去反序列化字符串。

public T DeserializeObject<T>(string jsonObject) { T result = default(T); if (!string.IsNullOrEmpty(jsonObject)) { //errors on the line below!! result = new JavaScriptSerializer().Deserialize<T>(jsonObject); } return result; }

正是在尝试反序列化

Expression

时出现错误。
我已经正确地修饰了所涉及的类,并且它们都具有无参数的构造函数,所以无法理解为什么会收到错误。

有什么想法吗?

我想为我的Web服务创建动态表达式,以允许客户端应用程序传递动态查询以根据需要过滤数据。为此,我正在尝试序列化/反序列化...

c# json serialization deserialization javascriptserializer
1个回答
0
投票
存在简单的库Remote.Linq-https://github.com/6bee/Remote.Linq
© www.soinside.com 2019 - 2024. All rights reserved.