Using Reflection to Call a Friend Function

Posted on 2008-10-21
Medium Priority
Last Modified: 2013-12-17
In my .NET 3.5 VB project, I'm trying to use reflection to call a friend subroutine on an object. Unfortunately, I haven't been able to get any of the Friend Subs or Friend Functions to return from any of Type.GetXXXX functions.

Can Friend functions/Subs be accessed with reflection? How?

Question by:fhdigital
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
LVL 63

Accepted Solution

Fernando Soto earned 2000 total points
ID: 22771856
Hi fhdigital;

Here is a code snippet to show how to do it.


Imports System.Reflection
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim tc As New TestClass()
        Dim tcSayHello As MethodInfo = tc.GetType().GetMethod("SayHello", _
                                                    BindingFlags.NonPublic Or BindingFlags.Instance)
        tcSayHello.Invoke(tc, Nothing)
        Dim tcGetMessage As MethodInfo = tc.GetType().GetMethod("GetMessage", _
                                                      BindingFlags.NonPublic Or BindingFlags.Instance)
        Dim params() As Object = {"Fernando Soto"}
        MessageBox.Show(tcGetMessage.Invoke(tc, params))
    End Sub
End Class
Public Class TestClass
    Friend Sub SayHello()
    End Sub
    Friend Function GetMessage(ByVal name As String) As String
        Return "Hello " & name
    End Function
End Class

Open in new window


Author Comment

ID: 22777358
Thanks Fernando. I'll check it out.

Author Comment

ID: 22777533
That worked great! Thanks. I had tried the NonPublic and Instance BindingFlags previously but never together. Works like a charm!
LVL 63

Expert Comment

by:Fernando Soto
ID: 22781843
Not a problem, glad I was able to help.  ;=)

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question