[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對此做了什麼?
的意見所提出的建議,你不能轉換的基礎來推導: 但實際上,我已經在我看來成功地做到了這一點,它只是沒有在控制器操作的工作:
CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
這是成功轉換,那麼爲什麼不能在控制器操作中使用類似的東西?
您不能從基礎派生到派生。反過來可能是 – noobob 2013-05-06 06:05:54
請查看問題的最後兩段 – Nirman 2013-05-06 06:50:00
再次檢查Martin的答案(第一個例子)。 – noobob 2013-05-06 06:51:31