Toon posts:

Vraagje over Reflection in vb.net.

Pagina: 1
Acties:

Onderwerpen


  • MasterTweaker
  • Registratie: maart 2010
  • Laatst online: 12:53
Ik heb een klein vraagje over reflectie in VB.net. Aangezien ik de vraag elders op een Engels forum ook al gesteld heb heb ik het even in de Engels gelaten. Ik hoop dat dit geen probleem is.

I'm making a little program in where i'm trying to invoke a method from a class dynamically with so called Reflection.

The class I'm trying to call is called ContactList and i try to invoke the property in this class called count. The assembly itself is called Contact.Exe

Now I have the following code where I make an instance of the ContactList class using reflection:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 Public
 Function
 InvokeContacts() As
 Integer

  Dim
 ContactsAssembly As
 Assembly
 = Assembly
.LoadFrom("Contacts.exe"
)
  Dim
 Mycontactlist As
 Type = ContactsAssembly.GetType
("_windowsapplication.ContactList"
)
  Dim
 argumentTypes() As
 Type = Type.EmptyTypes
  Dim
 MycontaclistConstructor As
 ConstructorInfo = Mycontactlist.GetConstructor(argumentTypes)
  Dim
 ContactList As
 Object
 = Activator.CreateInstance(Mycontactlist)


But Now I want to assign this instance to a value in a module in the Contacts.exe assembly. This module is called module1. This is because if I invoke an object of this class of ContactList, the ContactList is empty again and I need to have it the current value. So in the module1 is a public value which i need to assign to the empty ContactList object. This value is called:

code:
1
  Public mycontacts As ContactList


(This value is assigned in a module called Module1 in the Contacts.exe assembly)

Now I want to assign this value to the object of type ContactList. So I expanded the code as seen below:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim ContactsAssembly As Assembly = Assembly.LoadFrom("Contacts.exe")
    Dim mymodule As [Module] = ContactsAssembly.GetModule("_windowsapplication.Module1")

    Dim Mycontactlist As Type = ContactsAssembly.GetType("_windowsapplication.ContactList")
    Dim argumentTypes() As Type = Type.EmptyTypes
    Dim MycontaclistConstructor As ConstructorInfo = Mycontactlist.GetConstructor(argumentTypes)

    Dim ContactList As Object = Activator.CreateInstance(Mycontactlist)

    Dim myfield As FieldInfo = mymodule.GetField("mycontacts")

    ContactList = myfield.GetValue(myfield)

    Dim count As PropertyInfo = ContactList.GetProperty("Count")
    Dim CountCL As Integer = count.GetValue(ContactList, Nothing)
    Return CountCL


But now I get a Nullexception in this line of code:

code:
1
Dim myfield As FieldInfo = mymodule.GetField("mycontacts")


So is it possible anyway to assign a public value in a module to a dynamically created object like the way I tried to do it? :

  • CoolGamer
  • Registratie: mei 2005
  • Laatst online: 17-09 09:10

CoolGamer

What is it? Dragons?

Je zal die NullReferenceException krijgen, omdat mymodule null teruggeeft. Maar daar had je waarschijnlijk met even debuggen ook wel achter kunnen komen. GetModule geeft niet de modules terug uit een VB.net project, maar module staat daar voor iets anders (zie http://msdn.microsoft.com/en-us/library/c405shex.aspx). Dus hiermee kan je zelf wel even verder zoeken naar het probleem.

Het vertalen van de vraag naar het Nederlands is wel zo netjes. Zo laat je zien dat je ook wat moeite doet om de vraag beantwoord te krijgen.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


  • MasterTweaker
  • Registratie: maart 2010
  • Laatst online: 12:53
Oke thnx maar hoe krijg je dan wel de module met daarin de mycontacts variabele? Doe je dat gewoon met de Gettype methode?

[Voor 20% gewijzigd door MasterTweaker op 16-10-2010 21:59]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 19:14

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

MasterTweaker schreef op zaterdag 16 oktober 2010 @ 21:02:
Ik heb een klein vraagje over reflectie in VB.net. Aangezien ik de vraag elders op een Engels forum ook al gesteld heb heb ik het even in de Engels gelaten. Ik hoop dat dit geen probleem is.
Probleem is een groot woord en het gros (zo niet alle) programmeurs spreken best Engels. Echter; we hebben op GoT afgesproken Nederlands te hanteren en dan doen we dus ook allemaal. Het is helemaal niet erg als je je topic elders ook plaatst maar we verwachten op GoT dat je in ieder geval even de moeite neemt je topic te vertalen naar Nederlands. Dat is gewoon wel zo netjes en een kleine moeite. Ik laat 't topic staan maar wil je er dus even op wijzen dat we voortaan van je verwachten dat je die moeite neemt.

Verder: Waar hoort mijn topic?
Dit is een concreet implementatieprobleem en dus SEA >> PRG

En what's up met dat eerste codeblok? Dat is echt compleet onleesbaar zo...

[Voor 12% gewijzigd door RobIII op 17-10-2010 13:57]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • keesdewit
  • Registratie: december 2003
  • Laatst online: 21:35
Lees je even Feedback op moderatie binnen de Devschuur?

[Voor 92% gewijzigd door RobIII op 17-10-2010 17:29]



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee