我有以下代码:
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
filteredEmployees.EmployeeRecords = employee[0];
}
其中EmployeeRecords属于IEnumerable<Employee>
类型
我得到以下异常:
无法将类型"Newtonsoft.Json.Linq.JObject"隐式转换为"System.Collections.Generic.IEnumerable"。显式转换存在(是否缺少演员阵容?)
我该如何解决此问题?
消息表明employee[0]
将作为JObject
返回,因此必须对其进行解析才能强制转换为另一种类型的对象。我还没有看到足够的代码,不知道哪一个最适合你,你可能还有更多的步骤要做,但下面页面上描述的动态到强类型映射(使用JObject.ToObject()
)或强类型JSON解析(使用JsonConvert.DeserializeObject()
)应该会让你走上正确的道路:
http://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing#DynamictoStrongTypeMapping
您可以使用JavascriptSerializer将动态转换为Employee:
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
filteredEmployees.EmployeeRecords = serializer.Deserialize<List<EmployeeRecords >>(employee);
}
嗯,您正试图将一名员工分配给一个枚举对象。尝试:
filteredEmployees.EmployeeRecords = employee;
你为什么在这个方法上使用动态参数,有什么好的理由吗?
如果你只想在你的枚举表中有一个元素,你可以试试:
filteredEmployees.EmployeeRecords = new [] { employee[0] };
尽管我怀疑您在某个时候需要将JSON对象反序列化为Employee对象