469,578 Members | 1,421 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,578 developers. It's quick & easy.

question about public function

Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind pages of
my application? Or, till where is this function accessible?
thanks
Gilbert
Feb 24 '07 #1
9 1549
The function is only available while that page (class) is loaded, which is
only while the page is being requested. You could place a function like
this (along with other functions you wish to call repeatedly) in their own
assembly (.dll) and then just reference that assembly from your ASP.NET
project, make an instance of the class that contains them and run them as
you need to.
"Gilbert" <gi@bert.sdwrote in message
news:Os**************@TK2MSFTNGP06.phx.gbl...
Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind pages
of my application? Or, till where is this function accessible?
thanks
Gilbert

Feb 25 '07 #2
Thanks,

What is then the meaning of 'Public'?. If the function would be 'Private',
would that change its reach?
"Scott M." <s-***@nospam.nospamschreef in bericht
news:e7*************@TK2MSFTNGP06.phx.gbl...
The function is only available while that page (class) is loaded, which is
only while the page is being requested. You could place a function like
this (along with other functions you wish to call repeatedly) in their own
assembly (.dll) and then just reference that assembly from your ASP.NET
project, make an instance of the class that contains them and run them as
you need to.
"Gilbert" <gi@bert.sdwrote in message
news:Os**************@TK2MSFTNGP06.phx.gbl...
>Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind pages
of my application? Or, till where is this function accessible?
thanks
Gilbert


Feb 25 '07 #3
Hi,

Scott M. wrote:
The function is only available while that page (class) is loaded, which is
only while the page is being requested.
Actually, a Page is an object like any other. "loaded" is a bit
confusing in this context.

When the request arrives, an instance of the corresponding Page is
created. The instance is disposed after the Response is sent. On the
next Request, another, brand new instance of the Page is created. This
explains why you cannot save instance variables over requests, but must
resort to Session, Cache, Application objects...

However, if you have a public method in a class deriving from Page, you
can use that method at any time simply by creating a new instance of
that Page:

MyOwnPage anInstance = new MyOwnPage();
anInstance.executeSomething();

However, I wouldn't recommend this. If you have a public method that is
used in multiple pages, extract this method to a different object and
use that object from all pages. It's all abut design ;-)

HTH,
Laurent

You could place a function like
this (along with other functions you wish to call repeatedly) in their own
assembly (.dll) and then just reference that assembly from your ASP.NET
project, make an instance of the class that contains them and run them as
you need to.
"Gilbert" <gi@bert.sdwrote in message
news:Os**************@TK2MSFTNGP06.phx.gbl...
>Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind pages
of my application? Or, till where is this function accessible?
thanks
Gilbert


--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch
Feb 25 '07 #4
Hi,

Gilbert wrote:
Thanks,

What is then the meaning of 'Public'?. If the function would be 'Private',
would that change its reach?
It's not about the method being public or private. It's about the Page
instance's lifecycle. Read my other post in that thread.

HTH,
Laurent
--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch
Feb 25 '07 #5
Thanks

"Laurent Bugnion [MVP]" <ga*********@bluewin.chschreef in bericht
news:%2***************@TK2MSFTNGP06.phx.gbl...
Hi,

Scott M. wrote:
>The function is only available while that page (class) is loaded, which
is only while the page is being requested.

Actually, a Page is an object like any other. "loaded" is a bit confusing
in this context.

When the request arrives, an instance of the corresponding Page is
created. The instance is disposed after the Response is sent. On the next
Request, another, brand new instance of the Page is created. This explains
why you cannot save instance variables over requests, but must resort to
Session, Cache, Application objects...

However, if you have a public method in a class deriving from Page, you
can use that method at any time simply by creating a new instance of that
Page:

MyOwnPage anInstance = new MyOwnPage();
anInstance.executeSomething();

However, I wouldn't recommend this. If you have a public method that is
used in multiple pages, extract this method to a different object and use
that object from all pages. It's all abut design ;-)

HTH,
Laurent

>You could place a function like this (along with other functions you wish
to call repeatedly) in their own assembly (.dll) and then just reference
that assembly from your ASP.NET project, make an instance of the class
that contains them and run them as you need to.
"Gilbert" <gi@bert.sdwrote in message
news:Os**************@TK2MSFTNGP06.phx.gbl...
>>Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind
pages of my application? Or, till where is this function accessible?
thanks
Gilbert



--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch

Feb 25 '07 #6
I tried with 'Private' instead of 'Public' and this gives an error ("not
accessible in this context because it is 'Private")
With 'Public' or even with nothing, it works.

So, the answer on my question is:
when it's 'Private', the function is only accessible in the code-behind
page;
when 'Public' or nothing, it's also accessible from the aspx file.

Private Function myfunction(ByVal myvar As Object) As String
.....
End Function

and in the aspx file:
------------------
<asp:Literal ID="rr" runat="server" Text='<%# myfunction(Eval("field1")) %>'
/>




"Laurent Bugnion [MVP]" <ga*********@bluewin.chschreef in bericht
news:%2***************@TK2MSFTNGP06.phx.gbl...
Hi,

Gilbert wrote:
>Thanks,

What is then the meaning of 'Public'?. If the function would be
'Private', would that change its reach?

It's not about the method being public or private. It's about the Page
instance's lifecycle. Read my other post in that thread.

HTH,
Laurent
--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch

Feb 25 '07 #7
Gee, I thought that is exactly what I said....

I indicated that a page is a class -
...while the page (class)...

And, loaded isn't really confusing at all, as I pointed out that this is
while "the page is being requested". Instances of classes are "loaded" into
the heap and assigned a pointer. While they have a pointer, they can be
accessed by your code. When the no longer have a pointer (like when the
page request is completed and the page response is loaded), they are the
GC's responsibility. They may still exist in memory (the heap) for some
period of time, but since the pointer to the object is gone, you can't get
to that particular instance of the object again.

Your last recommendation, "extract this method to a different object and use
that object from all pages" is exactly what I said, but more clearly, when I
indicated that the function could be placed inside of a class in a separate
..dll and then referenced and instantiated.

-Scott
"Laurent Bugnion [MVP]" <ga*********@bluewin.chwrote in message
news:%2***************@TK2MSFTNGP06.phx.gbl...
Hi,

Scott M. wrote:
>The function is only available while that page (class) is loaded, which
is only while the page is being requested.

Actually, a Page is an object like any other. "loaded" is a bit confusing
in this context.

When the request arrives, an instance of the corresponding Page is
created. The instance is disposed after the Response is sent. On the next
Request, another, brand new instance of the Page is created. This explains
why you cannot save instance variables over requests, but must resort to
Session, Cache, Application objects...

However, if you have a public method in a class deriving from Page, you
can use that method at any time simply by creating a new instance of that
Page:

MyOwnPage anInstance = new MyOwnPage();
anInstance.executeSomething();

However, I wouldn't recommend this. If you have a public method that is
used in multiple pages, extract this method to a different object and use
that object from all pages. It's all abut design ;-)

HTH,
Laurent

>You could place a function like this (along with other functions you wish
to call repeatedly) in their own assembly (.dll) and then just reference
that assembly from your ASP.NET project, make an instance of the class
that contains them and run them as you need to.
"Gilbert" <gi@bert.sdwrote in message
news:Os**************@TK2MSFTNGP06.phx.gbl...
>>Hi,

In the code-behind, i have this function:

Public Function myfunction(ByVal myvar As Object) As String
dim x as string = myvar
.....
Return x
End Function

My question is: can i use this function in other aspx / code-behind
pages of my application? Or, till where is this function accessible?
thanks
Gilbert



--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch

Feb 25 '07 #8
Hi,

Scott M. wrote:
Gee, I thought that is exactly what I said....
<snipYou're right. Somehow the first time I read your post, I
misunderstood what you meant; the fault lies on my side, not yours.
Your last recommendation, "extract this method to a different object and use
that object from all pages" is exactly what I said, but more clearly, when I
indicated that the function could be placed inside of a class in a separate
..dll and then referenced and instantiated.
IMHO the class doesn't need to be placed in a separate DLL, if it's used
only by different Pages in the same web application, it can be in a
separate object, but in the same DLL.
-Scott
Friendly greetings,
Laurent
--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch
Feb 25 '07 #9
When it's private, it's only accessible inside the same class. In this
case the class is the code behind. The code beind class inherits from
the Page class, and the class that is created for the aspx file inherits
from the code behind class.

To make members of the code behind class visible to the aspx class, you
can make them public or protected. Usually they are made protected as
they don't need to be more visible than that.

Not specifying accessibility at all should make them private.

Gilbert wrote:
I tried with 'Private' instead of 'Public' and this gives an error ("not
accessible in this context because it is 'Private")
With 'Public' or even with nothing, it works.

So, the answer on my question is:
when it's 'Private', the function is only accessible in the code-behind
page;
when 'Public' or nothing, it's also accessible from the aspx file.

Private Function myfunction(ByVal myvar As Object) As String
....
End Function

and in the aspx file:
------------------
<asp:Literal ID="rr" runat="server" Text='<%# myfunction(Eval("field1")) %>'
/>

"Laurent Bugnion [MVP]" <ga*********@bluewin.chschreef in bericht
news:%2***************@TK2MSFTNGP06.phx.gbl...
>Hi,

Gilbert wrote:
>>Thanks,

What is then the meaning of 'Public'?. If the function would be
'Private', would that change its reach?
It's not about the method being public or private. It's about the Page
instance's lifecycle. Read my other post in that thread.

HTH,
Laurent
--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft-LB.ch
PhotoAlbum: http://www.galasoft-LB.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch


--
Göran Andersson
_____
http://www.guffa.com
Feb 25 '07 #10

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

21 posts views Thread by Jon Slaughter | last post: by
7 posts views Thread by Kevin | last post: by
10 posts views Thread by C Downey | last post: by
5 posts views Thread by Colin McGuire | last post: by
3 posts views Thread by Ken H | last post: by
7 posts views Thread by heltena | last post: by
12 posts views Thread by Bryan Parkoff | last post: by
3 posts views Thread by Scott Stark | last post: by
4 posts views Thread by tshad | last post: by
reply views Thread by suresh191 | last post: by
4 posts views Thread by guiromero | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.