System.Type.Gettype

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    System.Type.Gettype

    Hallo!

    Bin gerade zu blöd ...

    Möchte gerne ein Type-Objekt erzeugen über den Typnamen:

    dim t = System.Type.Gettype("TypName")

    Tja, so weit so gut, aber wo bekomm ich den Typnamen her?

    Ein Test mit:

    dim t = System.Type.Gettype("System.Windows.Forms.Button")

    schlug fehl - also, was zum Teufel ist dieser Typname dann?
    Ich glaube ich stehe gerade auf dem Schlauch und verstehe nicht alles.. :pinch:

    Das Syntax lautet aber:
    Type.GetType("TypName")

    TypName besteht aus:
    TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

    ~Leviathan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Leviathan_“ ()

    Leviathan_ schrieb:

    Ich glaube ich stehe gerade auf dem Schlauch und verstehe nicht alles.. :pinch:

    Das Syntax lautet aber:
    Type.GetType("TypName")

    TypName besteht aus:
    TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

    ~Leviathan




    Klingt schon einmal gar nicht schlecht, aber gibt es auch eine Möglichkeit dynamisch daran zu kommen?
    Ist es vielleicht möglich per Reflection an den TypName einer Klasse zu ermitteln?
    Du willst einfach den Typnamen von einem Objekt haben?

    Also z.B.:

    Dim t As String

    Dass der Typ von t "String" ist? Dafür gibts eine Methode die sich TypeName() nennt.
    Das ist vorallem vorteilhaft wenn man ein Select Case mit Typen nutzen möchte.

    Dodo schrieb:

    Du willst einfach den Typnamen von einem Objekt haben?

    Also z.B.:

    Dim t As String

    Dass der Typ von t "String" ist? Dafür gibts eine Methode die sich TypeName() nennt.
    Das ist vorallem vorteilhaft wenn man ein Select Case mit Typen nutzen möchte.



    Wie bereits geschrieben ist das Problem gelöst :)

    TypeName kenne ich auch, bringt das selbe wie obj.gettype.fullname, brauchte aber den "TypeName" (wird in der Intellisense so genannt), um mit system.type.gettype("typeName").invoke ... eine dynamisch Instanz zu erzeugen.
    Ist leider aber nicht der Wert von TypeName :)

    Ansonsten hast du Recht, man kann damit sehr gut mit cases arbeiten:

    select case true
    case typename(obj) = "tralla"
    case typename(obj2) = "tralla2"
    ...
    end select

    Besser finde ich es jedoch mit TypeOf

    Trotzdem noch ein Danke für dienen Beitrag!
    Achso okay, nunja habe nicht genau gewusst was du suchst.

    Eben TypeOf funktioniert bei Select Case eben nicht *g* also zumindest nicht so

    VB.NET-Quellcode

    1. Select Case TypeOf(Control)
    2. Case Is Button
    3. Case Is Textbox
    4. End Select


    Deswegen muss man hier TypeName nutzen.

    Dodo schrieb:

    Achso okay, nunja habe nicht genau gewusst was du suchst.

    Eben TypeOf funktioniert bei Select Case eben nicht *g* also zumindest nicht so

    VB.NET-Quellcode

    1. Select Case TypeOf(Control)
    2. Case Is Button
    3. Case Is Textbox
    4. End Select


    Deswegen muss man hier TypeName nutzen.




    Hehe, aber so:

    select case true
    case typeof obj is system.string
    ...
    end select


    Funktioniert wunderbar - tja, man lernt nie aus ;)
    ja das es so funktioniert weiß ich, entspricht aber nicht meinem stil =) da könnte man genauso gut IFs benutzen, das schöne an Select Case ist ja man gibt EINE Reference an zu der man diverse Werte vergleicht, so hast du auch eine Referenc das True, aber du musst jedes mal TypeOf Object angeben =)

    Aber kann ja jeder machen wie er möchte *g*