Hi,
Let me try to simply explain my questions.
I've created a portal site with different types of users, e.g. Portal
Administrators and Normal Users.
One base class SessionUser (has a enum field UserType) and for each type of
user a inherited class like SessionMasterUser and SessionNormalUser.
Instantiating and keeping into a session:
case Normal user:
SessionUser user = new SessionNormalUser(loginName, pwd,
UserType.NormalUser)
All classes have different member variables and methods.
At the code behind pages I check for the Enum UserType and depending on that
I cast to the appropriate Type like ((SessionNormalUser)user).Email
What is better to do?
For each and everytime I need to access a member, property, or method from a
specific class (not the base class) by Casting?
or at places where it's needed more then once like following snippet.
SessionNormalUser normalUser = (SessionNormalUser)user
Question about that way: is there a performance penalty, since I understood
that there is only a new reference created to the object.
What's the cost of casting from a general to a more specific object?
Pattern Related Question(s)
In case of using the second option, which I prefer to make things easier to
read and understand, I don't want to create a null reference to all
different types of classes like:
SessionNormalUser normalUser = null;
SessionMasterUser masterUser = null;
etc...
I would like to create a kind of wrapper which is returning me the
appropriate information depending on the UserType enum.
This way should make things much more easier to maintain.
I know a bit about the design patterns but could you please give me a some
advice?
Thanks in Advance,
Remco