[DataContract]
public class SearchCriteria
{
[DataMember]
public string CountryID { get; set; }
}
[DataContract]
public class CitySearchCriteria: SearchCriteria
{
[DataMember]
public string CityID { get; set; }
}
sto creando un'istanza di SearchCriteria nella mia MVC azione del controller, e cercando di convertirlo in CitySearchCriteria.Impossibile eseguire il cast di classe di base (contratto di dati) per classe derivata
SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.CountryID = "1";
CitySearchCriteria citySearchCriteria = searchCriteria as CitySearchCriteria;
L'oggetto "citySearchCriteria" dopo l'istruzione precedente mostra il valore NULL. Mi aspettavo che mostrasse entrambe le proprietà, CountryID e CityID con CountryID popolato, e CityID vuoto ... ma sta impostando l'oggetto su NULL.
Quale potrebbe essere la soluzione qui? DataContract ha qualcosa a che fare con questo?
I commenti sono suggerendo, non è possibile convertire una base per ricavare: ma in realtà, ho fatto questo successo a mio avviso, non è solo lavorando in azione di controllo:
CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
Questa è la conversione con successo, quindi perché non la cosa simile che funziona nell'azione del controller?
Non è possibile eseguire il cast da Base a Derivato. L'inverso è possibile – noobob
si prega di consultare l'ultimo due paragrafo nella domanda – Nirman
Controllare di nuovo la risposta di Martin (1 ° esempio). – noobob