How do I organize C# classes that inherit from one another, but also have properties that inherit from one another?
Posted
by
Chris
on Stack Overflow
See other posts from Stack Overflow
or by Chris
Published on 2012-03-27T17:26:56Z
Indexed on
2012/03/27
17:28 UTC
Read the original article
Hit count: 209
I have an application that has a concept of a Venue
, a place where events happen. A Venue
is owned by a Company
and has many VenuePart
s. So, it looks like this:
public abstract class Venue
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<VenuePart> VenueParts { get; set; }
}
A Venue
can be a GolfCourseVenue
, which is a Venue
that has a Slope and a specific kind of VenuePart
called a HoleVenuePart
:
public class GolfCourseVenue
{
public string Slope { get; set; }
public virtual ICollection<HoleVenuePart> Holes { get; set; }
}
In the future, there may also be other kinds of Venue
s that all inherit from Venue
. They might add their own fields, and will always have VenuePart
s of their own specific type.
My declarations above seem wrong, because now I have a GolfCourseVenue
with two collections, when really it should just have the one. I can't override it, because the type is different, right? When I run reports, I would like to refer to the classes generically, where I just spit out Venue
s and VenuePart
s. But, when I render forms and such, I would like to be specific.
I have a lot of relationships like this and am wondering what I am doing wrong. For example, I have an Order
that has OrderItem
s, but also specific kinds of Order
s that have specific kinds of OrderItem
s.
© Stack Overflow or respective owner