【发布时间】:2011-08-08 07:44:13
【问题描述】:
我有一堂课:
public class LineItemWithDetails
{
public LineItem LineItem { get; set; }
public object Details { get; set; }
}
还有一个webservice方法,它接受一个从javascript传入的json对象,并反序列化它:
[WebMethod(true)]
public string SaveLineItemDetails(object details, int categoryId, int lineItemId)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
LineItemWithDetails lineItem = serializer.Deserialize<LineItemWithDetails>(details.ToString());
}
参数“details”,如下所示: details.Details["Name"] = "tessa"; details.Details["PositionTitle"] = "随便";
我的问题是,我希望在反序列化之前将 LineItemDetails 类中的 Details 属性转换为 BudgetPersonnel(见下文),以便将来自 json 对象的值分配给 BudgetPersonnel 属性。 BudgetPersonnel 只是一种类型的示例,还有其他几种。转换成哪个是由 webservice 方法中的 categoryId 参数决定的。我已经阅读了很多关于泛型铸造的教程,并且它们很有效。但是,我不明白如何在反序列化之前实现这一点。上面 SaveLineItemDetails 中列出的代码是反序列化的,但是 Details 属性显然只是一个对象,而不是 BudgetPersonnel 类型的。
例子:
public BudgetPersonnel(string name, string positionTitle)
{
this.Name = name;
this.PositionTitle = positionTitle;
}
【问题讨论】: