【发布时间】:2013-04-29 20:30:38
【问题描述】:
[DataContract]
public class SearchCriteria
{
[DataMember]
public string CountryID { get; set; }
}
[DataContract]
public class CitySearchCriteria: SearchCriteria
{
[DataMember]
public string CityID { get; set; }
}
我正在 MVC 控制器操作中创建 SearchCriteria 的实例,并尝试 将其转换为 CitySearchCriteria。
SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.CountryID = "1";
CitySearchCriteria citySearchCriteria = searchCriteria as CitySearchCriteria;
上述语句后的“citySearchCriteria”对象显示为 NULL 值。我期待它显示两个属性,CountryID 和 CityID,CountryID 填充,CityID 为空白......但它将对象设置为 NULL。
这里有什么解决方案? DataContract 对此有什么作用吗?
cmets 建议,您不能将基数转换为派生: 但实际上,在我看来,我已经成功地做到了,它只是在控制器操作中不起作用:
CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
这已成功转换,那么为什么在控制器操作中不能使用类似的东西呢?
【问题讨论】:
-
您不能从 Base 转换为 Derived。反之亦然
-
请看问题的最后两段
-
再次检查马丁的答案(第一个例子)。
标签: c# oop casting datacontract derived-class