Casting Performance and Pattern Question

R

Remco

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
 
A

Alvin Bruney [MVP]

What's the cost of casting from a general to a more specific object?
not much expense here, casting is like putting a mask on over the face.
SessionNormalUser normalUser = null;
I'm not sure why you think you need this line of code
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top