By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,916 Members | 1,286 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,916 IT Pros & Developers. It's quick & easy.

Casting Performance and Pattern Question

P: n/a
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

Nov 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
> 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
--
Regards,
Alvin Bruney [ASP.NET MVP]
Got tidbits? Get it here...
http://tinyurl.com/27cok
"Remco" <re*****@hotmail.com> wrote in message
news:eA**************@TK2MSFTNGP11.phx.gbl... 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

Nov 18 '05 #2

P: n/a
> 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
--
Regards,
Alvin Bruney [ASP.NET MVP]
Got tidbits? Get it here...
http://tinyurl.com/27cok
"Remco" <re*****@hotmail.com> wrote in message
news:eA**************@TK2MSFTNGP11.phx.gbl... 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

Nov 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.