Nej, det går inte. Däremot går det att typa om ett PageItem till ett Item. Man kan aldrig typa om till ett "barn" av en superklass - enbart föräldrar/superklass.
Jag håller på med en enkel webbapplikation och testar lite Linq. Jag får problem när jag ska typa om ett objekt och tänket kollar om någon här har någon lösning på mitt problem. Nedan kommer lite kod med förklaring.
Item.cs (this is a auto generated file)
PageItem.cs ( This is a simple page class inheriting from Item.cs )
public class PageItem : Item {
//Add som properties and stuff
}
Default.aspx.cs (A simple page inheriting from Page.cs)
public partial class _Default : Web.Page<PageItem> {
//Do stuff
}
Page.cs ( This will be my base class for easy access to some nifty stuff like CurrentPage)
public abstract class Page : System.Web.UI.Page where TPage : Item {
public virtual TPage CurrentPage {
get {
MyDataContext db = new MyDataContext();
return (TPage)db.Items.Single(p => p.ID == 1); // <- Problem
}
}
}
Koden ovan ger mig problem, det verkar som att man inte kan typa om ett objekt av typen Item till PageItem fast PageItem ärver från Item.
Så hur skulle jag kunna lösa detta på ett annat sätt?