Avatar billede funkyloonie Nybegynder
23. september 2002 - 08:51 Der er 2 kommentarer og
1 løsning

CreateNewInstance()

Jeg har følgende kommando i java som opretter et objekt udfra et strengnavn: Class.forName(className).newInstance();
Hvordan mapper jeg den til vb .net ??
Avatar billede kichian Nybegynder
23. september 2002 - 10:08 #1
Fra dokken :

' This class is deployed as an assembly consisting of one DLL,
' called HelloWorld.dll.
Imports System

Public Class HelloWorld
  ' Constant Hello World string.
  Private m_helloWorld As String = "Hello World"
  ' Default public constructor.
  Public Sub New()

  End Sub 'New
 
  ' Print "Hello World" plus the passed text.
  Public Sub PrintHello(txt As String)
      ' Output to the Console.
      Console.WriteLine((m_helloWorld & " " & txt))
  End Sub
End Class

Imports System
Imports System.Reflection
Module VisualBasicLateHello
  Sub Main()
      ' Set up the variables.
      Dim assem as System.Reflection.Assembly
      Dim obj as Object
      Dim helloType as Type
      Dim printMethod as MethodInfo
      ' Load the assembly to use.
      assem = System.Reflection.Assembly.Load("HelloWorld")
      ' Get the type to use from the assembly.
      helloType = assem.GetType("HelloWorld")
      ' Get the method to use from the type.
      printMethod = helloType.GetMethod("PrintHello")
      ' Create an instance of the type.
      obj = Activator.CreateInstance(helloType)
      ' Create an array to hold the arguments.
      Dim args(1) as Object
      ' Set the arguments.
      args(0) = "From Visual Basic Late Bound"
      ' Invoke the method.
      printMethod.Invoke(obj, args)
  End Sub
End Module
Avatar billede tjalle Nybegynder
25. september 2002 - 10:44 #2
roder med noget af det samme.
Kan du virkelig ikke lade sig gøre at sige:

interface person
...
end interface

class ansat
  inherits person
...
end class


dim s as String = "ansat"
dim p as person = new Type(s)  // laver et instans af ansat via person

så det kun er kaldet til klassen der er variabelt ?

Alt det andet fis med at skal have data fra en assembly er vel ikke nødvendigt !!

Tj.
Avatar billede kichian Nybegynder
25. september 2002 - 13:47 #3
Det er da nødvendigt at vide hvor klassen skal loades fra, hvis der er flere Assemblies der definerer samme klasse.
Ovenstående kan skrives lidt kortere HVIS den klasse du vil instansiere er en del af den aktuelle assembly.

Assembly abDenne = Assembly.GetExecutingAssembly();
Type enType = abDenne.GetType("MitNameSpace.MinKlasse");
Object objektet = Activator.CreateInstance(enType);
MinKlasse mitObject = objektet as mitObject;
mitObject.MinMetode();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester