I don’t know what this is called but here goes.
public class Person
{
long ID;
}
public class Banker : Person
{
string example1;
}
public class Scientist : Person
{
string example2;
}
I’m trying implement our ORM to match our database and I ran into this problem. Hopefully this example is easy enough to understand.
Now the object-relation mapping makes sense for a person being a Banker or a Scientist. The problem I have been having is the Person being a Banker and a Scientist. So what I’m trying to accomplish is being able to create a Banker or Scientist and being able to cast it to either while having the exact same base class object.
I’m not really looking for multiple inheritance. What I’m looking for is a way to instantiate multiple objects with the same base class object. For example the Person is a Banker and a Scientist but not a Banker Scientist (a class having attributes of both banker and a scientist).
This was actually a flaw in the database and the model is now being change but its still a curios question.
C# does not support multiple inheritance so we often use composition or interfaces when we need to model situations similar to yours. Because you are dealing with an ORM you probably need the interface approach. Consider this:
As for the approach that you are taking, you can’t cast between sibling classes (that is, two classes that have the same base class). And that’s a good thing. Keep in mind that inheritance is used to model “is a” relationships.
So here a
Dogis anAnimaland aCatis anAnimalbut it makes no sense to be able to cast between the two. Yes, you can define user-defined conversions but don’t; that would be a huge design smell.