Solved

Dynamically Assign Instance Name

Posted on 2006-06-27
5
220 Views
Last Modified: 2010-04-23
Hello, I'm working on my first .NET project, and have a need similar to what I've done before in Actionsctipt.  I'm creating multiple instances of a custom class "Cycles," and would like to name them based on their machineID.  In Actionscript, I would so something like:

Eval(strMachineID + "Cycle") = New Cycle(startTime, stopTime) ...or something similar

This would result with an instance of the Cycle class named 116Cycle if the machine's id was 116.  I could then have multiple instances of the Cycle class (one per machine) and be able to reference them.  That way, no matter how many machines were added or removed, my class instances would be made to match.  

Thus far I have been unable to find anything regarding dynamically naming and referencing class instances in VB .NET.  Am I missing something simple?  Or... is there a better way to do it that someone could explain?

Thanks,
Alan
0
Comment
Question by:alanteigne
  • 3
  • 2
5 Comments
 
LVL 62

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 16995185
Hi alanteigne;

You can not do that in Visual Basic .Net. But what you can do is the following.

        ' Class level variable, HashTable
        Private htCycle As New Hashtable

        Dim strMachineID As String = "116"
        Dim c As New Cycle
        '...
        ' Initialize the class Cycle as needed
        '...
        htCycle.Add(strMachineID & "Cycle", c)
        ' Add all you Cycle class to the hash table with the name you want.

        ' To get a Cycle class from the hash table
        Dim cc As Cycle
        ' cc will have a reference to class 116Cycle
        cc = CType(htCycle("116Cycle"), Cycle)


I hope that this is of some help.

Fernando
0
 

Author Comment

by:alanteigne
ID: 16996330
Fernando-

Thanks for the tip, I will try that next.  Using this method, is there a way to destroy one of those instances without affecting the rest of them?

Thanks,
alan
0
 
LVL 62

Expert Comment

by:Fernando Soto
ID: 16996460
Alan;

If you execute a Remove method call on the hash table like this, assuming you have a Cycle class called 116Cycle:

        Dim cycleObjectName As String = "116Cycle"
        ...
        htCycle.Remove( cycleObjectName )

and as long as no other variable holds a reference to the object it will be garbage collected. All other Cycle objects in the hash table stay unaffected by that one remove. To remove all objects from the hash table you can do this

        htCycle.Clear( )

Fernando
0
 

Author Comment

by:alanteigne
ID: 17000446
Fernando-

Thanks!  I'll go ahead and hit accept.  If it's a quick answer, could you also tell me how I can see if an instance exists... something like...

If htCycle.exists(cycleObjectName) Then
     Do whatever
End If
0
 
LVL 62

Expert Comment

by:Fernando Soto
ID: 17000835
Hi Alan;

You can find out if a object exists with the following statement.

     If htCycle.ContainsKey(cycleObjectName) Then
          Do whatever
     End If

This is a link to the documentation for the HashTable Class with other methods and properties that it has.

     http://msdn2.microsoft.com/en-us/library/system.collections.hashtable_members.aspx

Fernando
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

747 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now