c# - Losing sub classes' properties in a collection of inherited classes -
i trying implement relatively easy class hierarchy. however, seems of knowledge lost since school.. problem subclasses' properties lost on retrieval.
the hierarchy follows:
- an abstract class general properties subclasses
- subclasses specific properties. inherits abstract class
- a collection of subclasses
collection
public class activefilters { public list<activefilter> filters { get; set; } enum filtertypes { daterange = 1, checkbox = 2, textbox = 3, radiobuttons = 4 }; public activefilters() { filters = new list<activefilter>(); //required filters on start filters.add( new filterdaterange( "/statistikstart.aspx", (int)filtertypes.daterange, "paymentdate", new datetime(1800, 1, 1), datetime.now.adddays(7) ) ); filters.add( new filterdaterange( "/statistikgiro.aspx", (int)filtertypes.daterange, "paymentdate", new datetime(1800, 1, 1), datetime.now ) ); } public activefilter getactivefilter(string source, string name) { try { return filters.firstordefault(x => x.source == source && x.name == name) activefilter; } catch { //filter not in collection return null; } } } abstract class
public abstract class activefilter { public string source { get; set; } public int type { get; set; } public string name { get; set; } } a subclass
public class filterdaterange : activefilter { public datetime fromdate { get; set; } public datetime todate { get; set; } public filterdaterange(string source, int type, string name, datetime fromdate, datetime todate) { base.source = source; base.type = type; base.name = name; this.fromdate = fromdate; this.todate = todate; } } when try retrieve 1 of created filters collection constructor, no dates saved subclass. information saved properties of abstract class:
filterdaterange test = ((filterdaterange)((activefilters)session["activefilters"]).getactivefilter("/statistikstart.aspx", "paymentdate")); is problem return activefilter getactivefilter() instead of sub class? if so, how can rewrite getactivefilter() return filters when filters can of different subclasses?
you have typos:
public filterdaterange(string source, int type, string name, datetime fromdate, datetime todate) { base.source = source; base.type = type; base.name = name; this.fromdate = fromdate; // set fromdate fromdate (the property) this.todate = todate; } should be
public filterdaterange(string source, int type, string name, datetime fromdate, datetime todate) { base.source = source; base.type = type; base.name = name; this.fromdate = fromdate; // set fromdate fromdate (the parameter) this.todate = todate; }
Comments
Post a Comment