vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Umsetzung der Reflection 
Autor: isiraider
Datum: 06.11.07 09:49

Hallo allerseits,

ich möchte folgendes Statement mit Hilfe von Metadaten aus einer Datenbank zusammenbasteln:

If TypeOf (cCtrl) Is ToolStrip Then
Dim ts As ToolStrip = CType(cCtrl, ToolStrip)
For Each tsi As ToolStripItem In ts.Items
.
.
.
End If


ToolStrip, ToolStripItem und Items liegen als Strings in der datenbank vor und sollen aus dieser in den Code reflektiert werden! Also:


If TypeOf (cCtrl) Is reflektiert aus DB Then
Dim ts As reflektiert aus DB = CType(cCtrl, reflektiert aus DB)
For Each tsi As reflektiert aus DB In ts.reflektiert aus DB
.
.
.
End If

Ich möchte somit die Metadaten, die als Strings in der Datenbank vorliegen in den Code einbringen und so "reflektieren", dass die Strings als Code gesehen werden.

Hier ein einfaches Beispiel, wo ich es hinbekommen habe:



Dim dr As DataRow = dt.NewRow()

'===== Alle Steuerelemente rekursiv durchlaufen
If cCtrl.HasChildren Then
For Each cChildCtrl As Control In cCtrl.Controls
FillControlDataSet(cChildCtrl)
Next
End If

Dim tType As Type = cCtrl.GetType() '>> Typ des Steuerelementes
Dim piPropertyInfo As PropertyInfo '>> Eigenschaftsinformation eines Objektes

'===== Fülle DataSet mit den folgenden Informationen über das Steuerelement:
' - ControlName: Name des Steuerelementes
' - ParentFormName: Name des Formulars, in dem sich das Steuerelement befindet
' - DefaultText: Der vom Entwickler zugewiesene String im Steuerelement
Dim reader As SqlDataReader = cData.ExecuteSelect2DataReader("SELECT PropertyInfoName FROM Reflection WHERE ControlType = '" & tType.Name.ToString() & "' OR ControlType = '" & tType.BaseType.Name.ToString() & "'")

Try
While reader.Read()
For Each piPropertyInfo In tType.GetProperties() '>> alle Eigenschaften eines Steuerelement-Typs durchlaufen
If piPropertyInfo.Name = reader.GetString(0) Then '>> Überprüfe, ob Eigenschaft in der Datenbank enthalten ist
dr("ControlName") = cCtrl.Name.ToString()
dr("ParentFormName") = cCtrl.FindForm.Name.ToString()
dr("DefaultText") = piPropertyInfo.GetValue(cCtrl, Nothing)
Try
dt.Rows.Add(dr)
Catch ex As Exception
End Try
End If
Next
End While

reader.Close()

Catch ex As Exception

End Try
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Umsetzung der Reflection1.418isiraider06.11.07 09:49
Re: Umsetzung der Reflection1.317Melkor06.11.07 10:04
Re: Umsetzung der Reflection903isiraider06.11.07 10:25
Re: Umsetzung der Reflection1.616Melkor06.11.07 10:41
Re: Umsetzung der Reflection957isiraider06.11.07 11:02
Re: Umsetzung der Reflection887Melkor06.11.07 11:17
Re: Umsetzung der Reflection945isiraider06.11.07 11:40
Re: Umsetzung der Reflection1.080Melkor06.11.07 13:03
Re: Umsetzung der Reflection913isiraider06.11.07 13:32
Re: Umsetzung der Reflection940Melkor06.11.07 13:52
Re: Umsetzung der Reflection880isiraider06.11.07 14:30
Re: Umsetzung der Reflection993Melkor06.11.07 14:53
Re: Umsetzung der Reflection1.159isiraider06.11.07 15:52
Re: Umsetzung der Reflection1.104ModeratorFZelle07.11.07 09:31
Re: Umsetzung der Reflection903Melkor07.11.07 10:14
Re: Umsetzung der Reflection1.262isiraider07.11.07 17:53

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel