Solved

Dynamically Assign Instance Name

Posted on 2006-06-27
5
221 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, just open a new email message. In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…

862 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

25 Experts available now in Live!

Get 1:1 Help Now