Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Retrieving derived class name inside base class

Reply
Thread Tools

Retrieving derived class name inside base class

 
 
Goran Djuranovic
Guest
Posts: n/a
 
      09-10-2007
Hi all,
Is there a way to retrieve a derived class name inside a subroutine or a
function of the base class? I am trying to get some data from the database,
based on which derived class is calling the subroutine. I know the base
class name can be retrieved by using reflection namespace:
System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.

Thanks
Goran


 
Reply With Quote
 
 
 
 
Eliyahu Goldin
Guest
Posts: n/a
 
      09-10-2007
It would be very much against the whole idea of inheritance. Instead you
should make a virtual GetData method in the base class and override it in
the derived classes.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


"Goran Djuranovic" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Hi all,
> Is there a way to retrieve a derived class name inside a subroutine or a
> function of the base class? I am trying to get some data from the
> database, based on which derived class is calling the subroutine. I know
> the base class name can be retrieved by using reflection namespace:
> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>
> Thanks
> Goran
>



 
Reply With Quote
 
 
 
 
Goran Djuranovic
Guest
Posts: n/a
 
      09-10-2007
Eliyahu, thanks, but I would not like to have to type anything on the derived classes (not even override methods), if possible.

Maybe I should explain the problem in detail. What I am trying to do is re-use a menu control and its methods on 10 different web pages with as less coding as possible. So, here is how I planned to do it:
- have every .aspx page contain a menu control (nothing declared in the code-behind, because it would conflict with the base class)
- have a base class contain all the methods for menu control (plus base class inherits from System.Web.UI.Page)
- have every page inherit from a base class
- every page has a subset of menu items, which is filterred based on what the page (class name) is, and this is where the problem is, because I cannot retrieve the name of the derived class from within the base class.

Wish I could use multiple inheritance (without having to use the interfaces).

Thanks
Goran

"Eliyahu Goldin" <(E-Mail Removed)> wrote in message news:(E-Mail Removed)...
> It would be very much against the whole idea of inheritance. Instead you
> should make a virtual GetData method in the base class and override it in
> the derived classes.
>
> --
> Eliyahu Goldin,
> Software Developer
> Microsoft MVP [ASP.NET]
> http://msmvps.com/blogs/egoldin
> http://usableasp.net
>
>
> "Goran Djuranovic" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> Hi all,
>> Is there a way to retrieve a derived class name inside a subroutine or a
>> function of the base class? I am trying to get some data from the
>> database, based on which derived class is calling the subroutine. I know
>> the base class name can be retrieved by using reflection namespace:
>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>
>> Thanks
>> Goran
>>

>
>

 
Reply With Quote
 
Eliyahu Goldin
Guest
Posts: n/a
 
      09-10-2007
You can always call GetType() method, can't you?

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin


"Goran Djuranovic" <(E-Mail Removed)> wrote in message
news:ejI$(E-Mail Removed)...
Eliyahu, thanks, but I would not like to have to type anything on the
derived classes (not even override methods), if possible.

Maybe I should explain the problem in detail. What I am trying to do is
re-use a menu control and its methods on 10 different web pages with as less
coding as possible. So, here is how I planned to do it:
- have every .aspx page contain a menu control (nothing declared in the
code-behind, because it would conflict with the base class)
- have a base class contain all the methods for menu control (plus base
class inherits from System.Web.UI.Page)
- have every page inherit from a base class
- every page has a subset of menu items, which is filterred based on what
the page (class name) is, and this is where the problem is, because I cannot
retrieve the name of the derived class from within the base class.

Wish I could use multiple inheritance (without having to use the
interfaces).

Thanks
Goran

"Eliyahu Goldin" <(E-Mail Removed)> wrote in
message news:(E-Mail Removed)...
> It would be very much against the whole idea of inheritance. Instead you
> should make a virtual GetData method in the base class and override it in
> the derived classes.
>
> --
> Eliyahu Goldin,
> Software Developer
> Microsoft MVP [ASP.NET]
> http://msmvps.com/blogs/egoldin
> http://usableasp.net
>
>
> "Goran Djuranovic" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> Hi all,
>> Is there a way to retrieve a derived class name inside a subroutine or a
>> function of the base class? I am trying to get some data from the
>> database, based on which derived class is calling the subroutine. I know
>> the base class name can be retrieved by using reflection namespace:
>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>
>> Thanks
>> Goran
>>

>
>



 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      09-11-2007
Thanks for Eliyahu's input.

Hi Goran,

As Eliyahu has suggested, to getting the base type from OO and inheritance
perspective is not quite realistic and recommended. However, based on my
understanding on your scenario, what you want to do is actually get some
information in the base class so as to determine which concrete child page
is the current running one, correct?

I've performed some research and the following ways should be some possible
means:

** Since the base class is Page(which also derived from Control class), you
can use the "this.Page" property to get the current running page class and
reflect its type.


** Or I think it is better to use some control or markup on the page to
detect the current page since you can use "this.Page.Controls" to get the
running page's Control collection. For example, this.Page.Title can give
you the page title.

Here is a test base page class I used for test and it works well:

>>>>>>>sample base page >>>>>>

public class BasePageClass : Page
{

public string PageTypeName
{
get
{
return this.Page.GetType().FullName;
}
}

public string PageTitle
{
get
{
return this.Page.Title;
}
}
}
<<<<<<<<<<<<<<<<<<<<<<

Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.

==================================================


This posting is provided "AS IS" with no warranties, and confers no rights.




--------------------
>From: "Eliyahu Goldin" <(E-Mail Removed)>
>References: <#(E-Mail Removed)>

<(E-Mail Removed)>
<ejI$(E-Mail Removed)>
>Subject: Re: Retrieving derived class name inside base class
>Date: Tue, 11 Sep 2007 00:36:35 +0200


>
>You can always call GetType() method, can't you?
>
>--
>Eliyahu Goldin,
>Software Developer & Consultant
>Microsoft MVP [ASP.NET]
>http://msmvps.com/blogs/egoldin
>
>
>"Goran Djuranovic" <(E-Mail Removed)> wrote in message
>news:ejI$(E-Mail Removed)...
>Eliyahu, thanks, but I would not like to have to type anything on the
>derived classes (not even override methods), if possible.
>
>Maybe I should explain the problem in detail. What I am trying to do is
>re-use a menu control and its methods on 10 different web pages with as

less
>coding as possible. So, here is how I planned to do it:
>- have every .aspx page contain a menu control (nothing declared in the
>code-behind, because it would conflict with the base class)
>- have a base class contain all the methods for menu control (plus base
>class inherits from System.Web.UI.Page)
>- have every page inherit from a base class
>- every page has a subset of menu items, which is filterred based on what
>the page (class name) is, and this is where the problem is, because I

cannot
>retrieve the name of the derived class from within the base class.
>
>Wish I could use multiple inheritance (without having to use the
>interfaces).
>
>Thanks
>Goran
>
>"Eliyahu Goldin" <(E-Mail Removed)> wrote in
>message news:(E-Mail Removed)...
>> It would be very much against the whole idea of inheritance. Instead you
>> should make a virtual GetData method in the base class and override it in
>> the derived classes.
>>
>> --
>> Eliyahu Goldin,
>> Software Developer
>> Microsoft MVP [ASP.NET]
>> http://msmvps.com/blogs/egoldin
>> http://usableasp.net
>>
>>
>> "Goran Djuranovic" <(E-Mail Removed)> wrote in message
>> news:%(E-Mail Removed)...
>>> Hi all,
>>> Is there a way to retrieve a derived class name inside a subroutine or a
>>> function of the base class? I am trying to get some data from the
>>> database, based on which derived class is calling the subroutine. I know
>>> the base class name can be retrieved by using reflection namespace:
>>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>>
>>> Thanks
>>> Goran
>>>

>>
>>

>
>
>


 
Reply With Quote
 
Goran Djuranovic
Guest
Posts: n/a
 
      09-11-2007
Hi Steven,
Your code returns the name of the .aspx page which is OK, but I need the
name of the .vb class behind it. So, for example, the ASPX page name in this
case is "Login.aspx" and the code-behind class name is "Login". What I need
returned is "Login", and not "Login.aspx".

Also, "Login" class inherits from the base class.

Thanks for your help guys.
Goran

"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Thanks for Eliyahu's input.
>
> Hi Goran,
>
> As Eliyahu has suggested, to getting the base type from OO and inheritance
> perspective is not quite realistic and recommended. However, based on my
> understanding on your scenario, what you want to do is actually get some
> information in the base class so as to determine which concrete child page
> is the current running one, correct?
>
> I've performed some research and the following ways should be some
> possible
> means:
>
> ** Since the base class is Page(which also derived from Control class),
> you
> can use the "this.Page" property to get the current running page class and
> reflect its type.
>
>
> ** Or I think it is better to use some control or markup on the page to
> detect the current page since you can use "this.Page.Controls" to get the
> running page's Control collection. For example, this.Page.Title can give
> you the page title.
>
> Here is a test base page class I used for test and it works well:
>
>>>>>>>>sample base page >>>>>>

> public class BasePageClass : Page
> {
>
> public string PageTypeName
> {
> get
> {
> return this.Page.GetType().FullName;
> }
> }
>
> public string PageTitle
> {
> get
> {
> return this.Page.Title;
> }
> }
> }
> <<<<<<<<<<<<<<<<<<<<<<
>
> Hope this helps.
>
> Sincerely,
>
> Steven Cheng
>
> Microsoft MSDN Online Support Lead
>
>
>
> ==================================================
>
> Get notification to my posts through email? Please refer to
> http://msdn.microsoft.com/subscripti...ult.aspx#notif
> ications.
>
>
>
> Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
> where an initial response from the community or a Microsoft Support
> Engineer within 1 business day is acceptable. Please note that each follow
> up response may take approximately 2 business days as the support
> professional working with you may need further investigation to reach the
> most efficient resolution. The offering is not appropriate for situations
> that require urgent, real-time or phone-based interactions or complex
> project analysis and dump analysis issues. Issues of this nature are best
> handled working with a dedicated Microsoft Support Engineer by contacting
> Microsoft Customer Support Services (CSS) at
> http://msdn.microsoft.com/subscripti...t/default.aspx.
>
> ==================================================
>
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
>
>
>
> --------------------
>>From: "Eliyahu Goldin" <(E-Mail Removed)>
>>References: <#(E-Mail Removed)>

> <(E-Mail Removed)>
> <ejI$(E-Mail Removed)>
>>Subject: Re: Retrieving derived class name inside base class
>>Date: Tue, 11 Sep 2007 00:36:35 +0200

>
>>
>>You can always call GetType() method, can't you?
>>
>>--
>>Eliyahu Goldin,
>>Software Developer & Consultant
>>Microsoft MVP [ASP.NET]
>>http://msmvps.com/blogs/egoldin
>>
>>
>>"Goran Djuranovic" <(E-Mail Removed)> wrote in message
>>news:ejI$(E-Mail Removed)...
>>Eliyahu, thanks, but I would not like to have to type anything on the
>>derived classes (not even override methods), if possible.
>>
>>Maybe I should explain the problem in detail. What I am trying to do is
>>re-use a menu control and its methods on 10 different web pages with as

> less
>>coding as possible. So, here is how I planned to do it:
>>- have every .aspx page contain a menu control (nothing declared in the
>>code-behind, because it would conflict with the base class)
>>- have a base class contain all the methods for menu control (plus base
>>class inherits from System.Web.UI.Page)
>>- have every page inherit from a base class
>>- every page has a subset of menu items, which is filterred based on what
>>the page (class name) is, and this is where the problem is, because I

> cannot
>>retrieve the name of the derived class from within the base class.
>>
>>Wish I could use multiple inheritance (without having to use the
>>interfaces).
>>
>>Thanks
>>Goran
>>
>>"Eliyahu Goldin" <(E-Mail Removed)> wrote in
>>message news:(E-Mail Removed)...
>>> It would be very much against the whole idea of inheritance. Instead you
>>> should make a virtual GetData method in the base class and override it
>>> in
>>> the derived classes.
>>>
>>> --
>>> Eliyahu Goldin,
>>> Software Developer
>>> Microsoft MVP [ASP.NET]
>>> http://msmvps.com/blogs/egoldin
>>> http://usableasp.net
>>>
>>>
>>> "Goran Djuranovic" <(E-Mail Removed)> wrote in message
>>> news:%(E-Mail Removed)...
>>>> Hi all,
>>>> Is there a way to retrieve a derived class name inside a subroutine or
>>>> a
>>>> function of the base class? I am trying to get some data from the
>>>> database, based on which derived class is calling the subroutine. I
>>>> know
>>>> the base class name can be retrieved by using reflection namespace:
>>>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>>>
>>>> Thanks
>>>> Goran
>>>>
>>>
>>>

>>
>>
>>

>



 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      09-12-2007
Thanks for your reply Goran,

Yes, my code example only return the page's title, however, it acually
demonstrate that you can get the underlying running page's class through

this.Page.GetType()

You can print out this value. This class should be a dynamic generated
type(by ASP.NET runtime). You can use its "BaseType" to get the further
parent type. Thus, you can get all the classes in the page's inheritance
chain. How do you think?

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead

This posting is provided "AS IS" with no warranties, and confers no rights.


--------------------
>Subject: Re: Retrieving derived class name inside base class
>Date: Tue, 11 Sep 2007 09:58:14 -0400


>Hi Steven,
>Your code returns the name of the .aspx page which is OK, but I need the
>name of the .vb class behind it. So, for example, the ASPX page name in

this
>case is "Login.aspx" and the code-behind class name is "Login". What I

need
>returned is "Login", and not "Login.aspx".
>
>Also, "Login" class inherits from the base class.
>
>Thanks for your help guys.
>Goran
>
>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>news:(E-Mail Removed)...
>> Thanks for Eliyahu's input.
>>
>> Hi Goran,
>>
>> As Eliyahu has suggested, to getting the base type from OO and

inheritance
>> perspective is not quite realistic and recommended. However, based on my
>> understanding on your scenario, what you want to do is actually get some
>> information in the base class so as to determine which concrete child

page
>> is the current running one, correct?
>>
>> I've performed some research and the following ways should be some
>> possible
>> means:
>>
>> ** Since the base class is Page(which also derived from Control class),
>> you
>> can use the "this.Page" property to get the current running page class

and
>> reflect its type.
>>
>>
>> ** Or I think it is better to use some control or markup on the page to
>> detect the current page since you can use "this.Page.Controls" to get the
>> running page's Control collection. For example, this.Page.Title can give
>> you the page title.
>>
>> Here is a test base page class I used for test and it works well:
>>
>>>>>>>>>sample base page >>>>>>

>> public class BasePageClass : Page
>> {
>>
>> public string PageTypeName
>> {
>> get
>> {
>> return this.Page.GetType().FullName;
>> }
>> }
>>
>> public string PageTitle
>> {
>> get
>> {
>> return this.Page.Title;
>> }
>> }
>> }
>> <<<<<<<<<<<<<<<<<<<<<<
>>
>> Hope this helps.
>>
>> Sincerely,
>>
>> Steven Cheng
>>
>> Microsoft MSDN Online Support Lead
>>
>>
>>
>> ==================================================
>>
>> Get notification to my posts through email? Please refer to
>>

http://msdn.microsoft.com/subscripti...ult.aspx#notif
>> ications.
>>
>>
>>
>> Note: The MSDN Managed Newsgroup support offering is for non-urgent

issues
>> where an initial response from the community or a Microsoft Support
>> Engineer within 1 business day is acceptable. Please note that each

follow
>> up response may take approximately 2 business days as the support
>> professional working with you may need further investigation to reach the
>> most efficient resolution. The offering is not appropriate for situations
>> that require urgent, real-time or phone-based interactions or complex
>> project analysis and dump analysis issues. Issues of this nature are best
>> handled working with a dedicated Microsoft Support Engineer by contacting
>> Microsoft Customer Support Services (CSS) at
>> http://msdn.microsoft.com/subscripti...t/default.aspx.
>>
>> ==================================================
>>
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>>
>>
>>
>> --------------------
>>>From: "Eliyahu Goldin" <(E-Mail Removed)>
>>>References: <#(E-Mail Removed)>

>> <(E-Mail Removed)>
>> <ejI$(E-Mail Removed)>
>>>Subject: Re: Retrieving derived class name inside base class
>>>Date: Tue, 11 Sep 2007 00:36:35 +0200

>>
>>>
>>>You can always call GetType() method, can't you?
>>>
>>>--
>>>Eliyahu Goldin,
>>>Software Developer & Consultant
>>>Microsoft MVP [ASP.NET]
>>>http://msmvps.com/blogs/egoldin
>>>
>>>
>>>"Goran Djuranovic" <(E-Mail Removed)> wrote in message
>>>news:ejI$(E-Mail Removed)...
>>>Eliyahu, thanks, but I would not like to have to type anything on the
>>>derived classes (not even override methods), if possible.
>>>
>>>Maybe I should explain the problem in detail. What I am trying to do is
>>>re-use a menu control and its methods on 10 different web pages with as

>> less
>>>coding as possible. So, here is how I planned to do it:
>>>- have every .aspx page contain a menu control (nothing declared in the
>>>code-behind, because it would conflict with the base class)
>>>- have a base class contain all the methods for menu control (plus base
>>>class inherits from System.Web.UI.Page)
>>>- have every page inherit from a base class
>>>- every page has a subset of menu items, which is filterred based on what
>>>the page (class name) is, and this is where the problem is, because I

>> cannot
>>>retrieve the name of the derived class from within the base class.
>>>
>>>Wish I could use multiple inheritance (without having to use the
>>>interfaces).
>>>
>>>Thanks
>>>Goran
>>>
>>>"Eliyahu Goldin" <(E-Mail Removed)> wrote in
>>>message news:(E-Mail Removed)...
>>>> It would be very much against the whole idea of inheritance. Instead

you
>>>> should make a virtual GetData method in the base class and override it
>>>> in
>>>> the derived classes.
>>>>
>>>> --
>>>> Eliyahu Goldin,
>>>> Software Developer
>>>> Microsoft MVP [ASP.NET]
>>>> http://msmvps.com/blogs/egoldin
>>>> http://usableasp.net
>>>>
>>>>
>>>> "Goran Djuranovic" <(E-Mail Removed)> wrote in

message
>>>> news:%(E-Mail Removed)...
>>>>> Hi all,
>>>>> Is there a way to retrieve a derived class name inside a subroutine

or
>>>>> a
>>>>> function of the base class? I am trying to get some data from the
>>>>> database, based on which derived class is calling the subroutine. I
>>>>> know
>>>>> the base class name can be retrieved by using reflection namespace:
>>>>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>>>>
>>>>> Thanks
>>>>> Goran
>>>>>
>>>>
>>>>
>>>
>>>
>>>

>>

>
>
>


 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      09-14-2007
Hi Goran,

Any further question or concern on this? If so, welcome to continue discuss
here.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------

>From: http://www.velocityreviews.com/forums/(E-Mail Removed) (Steven Cheng[MSFT])
>Organization: Microsoft
>Date: Wed, 12 Sep 2007 03:14:48 GMT
>Subject: Re: Retrieving derived class name inside base class


>Path: TK2MSFTNGHUB02.phx.gbl
>Xref: TK2MSFTNGHUB02.phx.gbl microsoft.public.dotnet.framework.aspnet:42045
>NNTP-Posting-Host: TOMCATIMPORT1 10.201.218.122
>
>Thanks for your reply Goran,
>
>Yes, my code example only return the page's title, however, it acually
>demonstrate that you can get the underlying running page's class through
>
> this.Page.GetType()
>
>You can print out this value. This class should be a dynamic generated
>type(by ASP.NET runtime). You can use its "BaseType" to get the further
>parent type. Thus, you can get all the classes in the page's inheritance
>chain. How do you think?
>
>Sincerely,
>
>Steven Cheng
>
>Microsoft MSDN Online Support Lead
>
>This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
>--------------------
>>Subject: Re: Retrieving derived class name inside base class
>>Date: Tue, 11 Sep 2007 09:58:14 -0400

>
>>Hi Steven,
>>Your code returns the name of the .aspx page which is OK, but I need the
>>name of the .vb class behind it. So, for example, the ASPX page name in

>this
>>case is "Login.aspx" and the code-behind class name is "Login". What I

>need
>>returned is "Login", and not "Login.aspx".
>>
>>Also, "Login" class inherits from the base class.
>>
>>Thanks for your help guys.
>>Goran
>>
>>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>>news:(E-Mail Removed).. .
>>> Thanks for Eliyahu's input.
>>>
>>> Hi Goran,
>>>
>>> As Eliyahu has suggested, to getting the base type from OO and

>inheritance
>>> perspective is not quite realistic and recommended. However, based on

my
>>> understanding on your scenario, what you want to do is actually get some
>>> information in the base class so as to determine which concrete child

>page
>>> is the current running one, correct?
>>>
>>> I've performed some research and the following ways should be some
>>> possible
>>> means:
>>>
>>> ** Since the base class is Page(which also derived from Control class),
>>> you
>>> can use the "this.Page" property to get the current running page class

>and
>>> reflect its type.
>>>
>>>
>>> ** Or I think it is better to use some control or markup on the page to
>>> detect the current page since you can use "this.Page.Controls" to get

the
>>> running page's Control collection. For example, this.Page.Title can give
>>> you the page title.
>>>
>>> Here is a test base page class I used for test and it works well:
>>>
>>>>>>>>>>sample base page >>>>>>
>>> public class BasePageClass : Page
>>> {
>>>
>>> public string PageTypeName
>>> {
>>> get
>>> {
>>> return this.Page.GetType().FullName;
>>> }
>>> }
>>>
>>> public string PageTitle
>>> {
>>> get
>>> {
>>> return this.Page.Title;
>>> }
>>> }
>>> }
>>> <<<<<<<<<<<<<<<<<<<<<<
>>>
>>> Hope this helps.
>>>
>>> Sincerely,
>>>
>>> Steven Cheng
>>>
>>> Microsoft MSDN Online Support Lead
>>>
>>>
>>>
>>> ==================================================
>>>
>>> Get notification to my posts through email? Please refer to
>>>

>http://msdn.microsoft.com/subscripti...ault.aspx#noti

f
>>> ications.
>>>
>>>
>>>
>>> Note: The MSDN Managed Newsgroup support offering is for non-urgent

>issues
>>> where an initial response from the community or a Microsoft Support
>>> Engineer within 1 business day is acceptable. Please note that each

>follow
>>> up response may take approximately 2 business days as the support
>>> professional working with you may need further investigation to reach

the
>>> most efficient resolution. The offering is not appropriate for

situations
>>> that require urgent, real-time or phone-based interactions or complex
>>> project analysis and dump analysis issues. Issues of this nature are

best
>>> handled working with a dedicated Microsoft Support Engineer by

contacting
>>> Microsoft Customer Support Services (CSS) at
>>> http://msdn.microsoft.com/subscripti...t/default.aspx.
>>>
>>> ==================================================
>>>
>>>
>>> This posting is provided "AS IS" with no warranties, and confers no
>>> rights.
>>>
>>>
>>>
>>>
>>> --------------------
>>>>From: "Eliyahu Goldin" <(E-Mail Removed)>
>>>>References: <#(E-Mail Removed)>
>>> <(E-Mail Removed)>
>>> <ejI$(E-Mail Removed)>
>>>>Subject: Re: Retrieving derived class name inside base class
>>>>Date: Tue, 11 Sep 2007 00:36:35 +0200
>>>
>>>>
>>>>You can always call GetType() method, can't you?
>>>>
>>>>--
>>>>Eliyahu Goldin,
>>>>Software Developer & Consultant
>>>>Microsoft MVP [ASP.NET]
>>>>http://msmvps.com/blogs/egoldin
>>>>
>>>>
>>>>"Goran Djuranovic" <(E-Mail Removed)> wrote in message
>>>>news:ejI$(E-Mail Removed).. .
>>>>Eliyahu, thanks, but I would not like to have to type anything on the
>>>>derived classes (not even override methods), if possible.
>>>>
>>>>Maybe I should explain the problem in detail. What I am trying to do is
>>>>re-use a menu control and its methods on 10 different web pages with as
>>> less
>>>>coding as possible. So, here is how I planned to do it:
>>>>- have every .aspx page contain a menu control (nothing declared in the
>>>>code-behind, because it would conflict with the base class)
>>>>- have a base class contain all the methods for menu control (plus base
>>>>class inherits from System.Web.UI.Page)
>>>>- have every page inherit from a base class
>>>>- every page has a subset of menu items, which is filterred based on

what
>>>>the page (class name) is, and this is where the problem is, because I
>>> cannot
>>>>retrieve the name of the derived class from within the base class.
>>>>
>>>>Wish I could use multiple inheritance (without having to use the
>>>>interfaces).
>>>>
>>>>Thanks
>>>>Goran
>>>>
>>>>"Eliyahu Goldin" <(E-Mail Removed)> wrote in
>>>>message news:(E-Mail Removed)...
>>>>> It would be very much against the whole idea of inheritance. Instead

>you
>>>>> should make a virtual GetData method in the base class and override

it
>>>>> in
>>>>> the derived classes.
>>>>>
>>>>> --
>>>>> Eliyahu Goldin,
>>>>> Software Developer
>>>>> Microsoft MVP [ASP.NET]
>>>>> http://msmvps.com/blogs/egoldin
>>>>> http://usableasp.net
>>>>>
>>>>>
>>>>> "Goran Djuranovic" <(E-Mail Removed)> wrote in

>message
>>>>> news:%(E-Mail Removed)...
>>>>>> Hi all,
>>>>>> Is there a way to retrieve a derived class name inside a subroutine

>or
>>>>>> a
>>>>>> function of the base class? I am trying to get some data from the
>>>>>> database, based on which derived class is calling the subroutine. I
>>>>>> know
>>>>>> the base class name can be retrieved by using reflection namespace:
>>>>>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>>>>>
>>>>>> Thanks
>>>>>> Goran
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>

>>
>>
>>

>
>


 
Reply With Quote
 
Goran Djuranovic
Guest
Posts: n/a
 
      09-17-2007
Hi Steven,
For some reason Me.Page.GetType() returns "ASP.Login_aspx", but using
BaseType as Me.GetType.BaseType.FullName returns what I want. Again, thanks
for your help and consider this thread closed.

Goran

"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Thanks for your reply Goran,
>
> Yes, my code example only return the page's title, however, it acually
> demonstrate that you can get the underlying running page's class through
>
> this.Page.GetType()
>
> You can print out this value. This class should be a dynamic generated
> type(by ASP.NET runtime). You can use its "BaseType" to get the further
> parent type. Thus, you can get all the classes in the page's inheritance
> chain. How do you think?
>
> Sincerely,
>
> Steven Cheng
>
> Microsoft MSDN Online Support Lead
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
>
> --------------------
>>Subject: Re: Retrieving derived class name inside base class
>>Date: Tue, 11 Sep 2007 09:58:14 -0400

>
>>Hi Steven,
>>Your code returns the name of the .aspx page which is OK, but I need the
>>name of the .vb class behind it. So, for example, the ASPX page name in

> this
>>case is "Login.aspx" and the code-behind class name is "Login". What I

> need
>>returned is "Login", and not "Login.aspx".
>>
>>Also, "Login" class inherits from the base class.
>>
>>Thanks for your help guys.
>>Goran
>>
>>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>>news:(E-Mail Removed).. .
>>> Thanks for Eliyahu's input.
>>>
>>> Hi Goran,
>>>
>>> As Eliyahu has suggested, to getting the base type from OO and

> inheritance
>>> perspective is not quite realistic and recommended. However, based on
>>> my
>>> understanding on your scenario, what you want to do is actually get some
>>> information in the base class so as to determine which concrete child

> page
>>> is the current running one, correct?
>>>
>>> I've performed some research and the following ways should be some
>>> possible
>>> means:
>>>
>>> ** Since the base class is Page(which also derived from Control class),
>>> you
>>> can use the "this.Page" property to get the current running page class

> and
>>> reflect its type.
>>>
>>>
>>> ** Or I think it is better to use some control or markup on the page to
>>> detect the current page since you can use "this.Page.Controls" to get
>>> the
>>> running page's Control collection. For example, this.Page.Title can give
>>> you the page title.
>>>
>>> Here is a test base page class I used for test and it works well:
>>>
>>>>>>>>>>sample base page >>>>>>
>>> public class BasePageClass : Page
>>> {
>>>
>>> public string PageTypeName
>>> {
>>> get
>>> {
>>> return this.Page.GetType().FullName;
>>> }
>>> }
>>>
>>> public string PageTitle
>>> {
>>> get
>>> {
>>> return this.Page.Title;
>>> }
>>> }
>>> }
>>> <<<<<<<<<<<<<<<<<<<<<<
>>>
>>> Hope this helps.
>>>
>>> Sincerely,
>>>
>>> Steven Cheng
>>>
>>> Microsoft MSDN Online Support Lead
>>>
>>>
>>>
>>> ==================================================
>>>
>>> Get notification to my posts through email? Please refer to
>>>

> http://msdn.microsoft.com/subscripti...ult.aspx#notif
>>> ications.
>>>
>>>
>>>
>>> Note: The MSDN Managed Newsgroup support offering is for non-urgent

> issues
>>> where an initial response from the community or a Microsoft Support
>>> Engineer within 1 business day is acceptable. Please note that each

> follow
>>> up response may take approximately 2 business days as the support
>>> professional working with you may need further investigation to reach
>>> the
>>> most efficient resolution. The offering is not appropriate for
>>> situations
>>> that require urgent, real-time or phone-based interactions or complex
>>> project analysis and dump analysis issues. Issues of this nature are
>>> best
>>> handled working with a dedicated Microsoft Support Engineer by
>>> contacting
>>> Microsoft Customer Support Services (CSS) at
>>> http://msdn.microsoft.com/subscripti...t/default.aspx.
>>>
>>> ==================================================
>>>
>>>
>>> This posting is provided "AS IS" with no warranties, and confers no
>>> rights.
>>>
>>>
>>>
>>>
>>> --------------------
>>>>From: "Eliyahu Goldin" <(E-Mail Removed)>
>>>>References: <#(E-Mail Removed)>
>>> <(E-Mail Removed)>
>>> <ejI$(E-Mail Removed)>
>>>>Subject: Re: Retrieving derived class name inside base class
>>>>Date: Tue, 11 Sep 2007 00:36:35 +0200
>>>
>>>>
>>>>You can always call GetType() method, can't you?
>>>>
>>>>--
>>>>Eliyahu Goldin,
>>>>Software Developer & Consultant
>>>>Microsoft MVP [ASP.NET]
>>>>http://msmvps.com/blogs/egoldin
>>>>
>>>>
>>>>"Goran Djuranovic" <(E-Mail Removed)> wrote in message
>>>>news:ejI$(E-Mail Removed).. .
>>>>Eliyahu, thanks, but I would not like to have to type anything on the
>>>>derived classes (not even override methods), if possible.
>>>>
>>>>Maybe I should explain the problem in detail. What I am trying to do is
>>>>re-use a menu control and its methods on 10 different web pages with as
>>> less
>>>>coding as possible. So, here is how I planned to do it:
>>>>- have every .aspx page contain a menu control (nothing declared in the
>>>>code-behind, because it would conflict with the base class)
>>>>- have a base class contain all the methods for menu control (plus base
>>>>class inherits from System.Web.UI.Page)
>>>>- have every page inherit from a base class
>>>>- every page has a subset of menu items, which is filterred based on
>>>>what
>>>>the page (class name) is, and this is where the problem is, because I
>>> cannot
>>>>retrieve the name of the derived class from within the base class.
>>>>
>>>>Wish I could use multiple inheritance (without having to use the
>>>>interfaces).
>>>>
>>>>Thanks
>>>>Goran
>>>>
>>>>"Eliyahu Goldin" <(E-Mail Removed)> wrote in
>>>>message news:(E-Mail Removed)...
>>>>> It would be very much against the whole idea of inheritance. Instead

> you
>>>>> should make a virtual GetData method in the base class and override it
>>>>> in
>>>>> the derived classes.
>>>>>
>>>>> --
>>>>> Eliyahu Goldin,
>>>>> Software Developer
>>>>> Microsoft MVP [ASP.NET]
>>>>> http://msmvps.com/blogs/egoldin
>>>>> http://usableasp.net
>>>>>
>>>>>
>>>>> "Goran Djuranovic" <(E-Mail Removed)> wrote in

> message
>>>>> news:%(E-Mail Removed)...
>>>>>> Hi all,
>>>>>> Is there a way to retrieve a derived class name inside a subroutine

> or
>>>>>> a
>>>>>> function of the base class? I am trying to get some data from the
>>>>>> database, based on which derived class is calling the subroutine. I
>>>>>> know
>>>>>> the base class name can be retrieved by using reflection namespace:
>>>>>> System.Reflection.MethodBase.GetCurrentMethod.Decl aringType.Name.
>>>>>>
>>>>>> Thanks
>>>>>> Goran
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>

>>
>>
>>

>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Casting from base to derived class in base constructor pastbin@gmail.com C++ 2 02-07-2008 02:41 PM
Derived::Derived(const Base&) and Derived& operator=(const Base&) developereo@hotmail.com C++ 1 05-23-2007 01:44 PM
Derived::Derived(const Base&) developereo@hotmail.com C++ 4 05-23-2007 09:32 AM
Derived::Derived(const Base&) and Derived& operator=(const Base&) developereo@hotmail.com C++ 1 05-23-2007 12:07 AM
Format of compiler generated derived destructor when base has 'virtual ~base() throw():" qazmlp C++ 1 04-10-2005 03:09 PM



Advertisments