Announcement

Collapse
No announcement yet.

Reflection zuweisen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Reflection zuweisen

    Hi zusammen,

    bin mir nicht so sicher obs überhaupt geht, da ich nach ein paar stunden "suchen" nix gefunden habe was passend wäre:

    Ich hole mir per Reflection:

    [highlight=vbnet]
    Dim T As Type = funA.GetType() ' die basisklasse
    Dim chartType As Type = GetType(ZEDHelper.Chart.chart) ' die "zu suchende" klasse
    For Each p As PropertyInfo In T.GetProperties

    If p.PropertyType = chartType Then
    ' hier kann ich zwar mit activator etc. auf die Methoden usw. zugreifen
    ' ... NICHTjedoch wie ich gern möchte:
    Dim Chart as ZEDHelper.Chart.chart = CType(T.InvokeMember(p.Name, ... ZEDHelper.Chart.chart)

    End If
    Next
    [/highlight]

    danke für hilfe
    Zuletzt editiert von Fremder; 25.11.2015, 16:45. Reason: layout .-)
    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
    Um heute vorm PC zu sitzen!

  • #2
    Was möchtest Du denn gerne? Ich verstehe nicht was das Ziel sein soll.

    Comment


    • #3
      ich möchte die klasse direkt ansprechen können (hier die ZEDHelper.Chart.chart)
      in der basisklasse können unterschiedlich viele dieser erstellt werden...

      Es ist quasi eine art kontrollfunktion ...

      Besteht denn die Möglichkeit, einen verweis darauf zu erstellen ?
      (als NEW kann ich diese - per reflection - erstellen )

      mfg - r.b
      Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
      Um heute vorm PC zu sitzen!

      Comment


      • #4
        Also mit Activator.CreateInstance() kannst Du von einer Klasse, deren Typ Du hast, den Konstruktor aufrufen und damit eine neue Instanz erzeugen. Folglich hast Du natürlich auch einen Verweis auf die neue Instanz. Ist es das was Du willst?

        Warum überhaupt Reflection? In vielen Fällen geht das wesentlich einfacher

        Comment


        • #5
          Originally posted by fanderlf View Post
          Also mit Activator.CreateInstance() kannst Du von einer Klasse, deren Typ Du hast, den Konstruktor aufrufen und damit eine neue Instanz erzeugen. Folglich hast Du natürlich auch einen Verweis auf die neue Instanz. Ist es das was Du willst?

          Warum überhaupt Reflection? In vielen Fällen geht das wesentlich einfacher
          eine NEUE Instanz wollte ich ja gerade NICHT.

          in der aktiven INSTANZ welche ich quasi "gefunden" habe sind einige andere infos welche wichtig wären.
          muss ich diese dann immer einzeln mit GetFields oder GetProp etc. ansprechen ?

          gibt es einen Grund, warum man eine vorhandene instanz (hier der .chart) nicht z.B. mit "Activator.GetInstance()" erhalten kann?

          Und einfacher wäre mir auch lieber. ich verzettel mich ziemlich bei reflection.

          ====

          ich glaub ich hatte mal wieder den WALD vor lauter Bäumen nicht gesehen.

          so gehts:
          [highlight=vbnet]
          Dim T As Type = funA.GetType()
          Dim chartType As Type = GetType(ZEDHelper.Chart.chart)
          Dim entHalteneCharts As New List(Of chart)
          For Each Fi In T.GetFields()
          If Fi.FieldType = GetType(ZEDHelper.Chart.chart) Then
          Dim treffer As chart = Fi.GetValue(funA)
          entHalteneCharts.Add(treffer)
          End If
          Next
          [/highlight]

          total irre (ich habe wirklich einige stunden rumgesucht ....)
          naja - irgendwie peinlich
          *g* schönen tag dir und danke
          Zuletzt editiert von Fremder; 26.11.2015, 11:18.
          Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
          Um heute vorm PC zu sitzen!

          Comment


          • #6
            Naja so ist das manchmal beim Programmieren Da sitzt man wie der Ochs vorm Berg und dann kommt der Kollege und es klaert sich in 2 Minuten.

            Comment

            Working...
            X