Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Get Private Variables using Reflection in VB.NET (URGENT)

Posted on 2006-11-09
5
Medium Priority
?
427 Views
Last Modified: 2012-05-05
Hi,

I'm not sure if this is possible but here goes...

I know you can use reflection to get the public properties of the current object/class:

      Me.GetType.getProperties

But I would like to get the private variables that are defined at the top of the class, see simple example below:



Public Class mySimpleClass

    Private _FirstName As String
    Private _LastName As String

    Public ReadOnly Property Fullname() As String
        Get
            Return _FirstName & " " & _LastName
        End Get
    End Property

    Public Sub New()

    End Sub

End Class



I know that example doesn't show much, but basically I know I could access the Property 'FullName' using reflection, however if I want to access the private variables _FirstName and _LastName, how would I go about it? If it's possile at all.
0
Comment
Question by:David_Reid_1985
[X]
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
5 Comments
 
LVL 4

Expert Comment

by:Xeavn
ID: 17910386
Make them not private?

The whole point of declaring them private means that they can only be accessed and changed inside of the class. If you need to access those variables from outside the class then you want to switch the declaration to Public, or perhaps create a couple more public properties that allow you access to them.
0
 
LVL 64

Accepted Solution

by:
Fernando Soto earned 2000 total points
ID: 17911452
Hi David_Reid_1985;

Yes that can be done. The following code assumes that the class mySimpleClass is part of the executing assembly.


        Dim SimpleClass As New mySimpleClass

        Dim myType As Type = GetType(mySimpleClass)
        Dim fieldInfos() As FieldInfo = myType.GetFields(BindingFlags.NonPublic Or _
            BindingFlags.Instance Or BindingFlags.Static)

        For Each fInfo As FieldInfo In fieldInfos
            Dim fieldName As String = fInfo.Name.PadRight(2)
            Dim fieldType As String = fInfo.FieldType.ToString
            Dim fieldValue As String = fInfo.GetValue(SimpleClass)
            Console.WriteLine("Field name = {0} Field value = {1} Field type = {2}", fieldName, fieldValue, fieldType)
        Next


Fernando
0
 

Author Comment

by:David_Reid_1985
ID: 17912674
I want to access them from within that class, so in the dispose function I can loop through all private variables setting them to nothing, rather than having to hard code the names of every variable.

Cheers Fernando I will try you suggestion later on today and let you know.

Thanks
David
0
 

Author Comment

by:David_Reid_1985
ID: 17912694
Just tried it, thanks Fernando worked a treat!
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17913862
No problem, glad I was able to help. ;=)
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

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

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Suggested Courses

636 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