Ich habe eine Klasse, die von einer generischen Klasse erbt. Mit GetMethode finde ich scheinbar nur Methoden/Funktionen, die in der abgeleiteten Klasse definiert wurden, aber nicht die der Vaterklasse. Wie bekomme ich das hin?
Private Sub SetGridValuetranslation(Of T As New)(ByVal ColumnName As String, ByVal c1Grid As C1TrueDBGrid) Try Dim v As C1.Win.C1TrueDBGrid.ValueItemCollection Dim o As New T
Dim myType As Type = o.GetType Dim flags As BindingFlags = (BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Static Or BindingFlags.Instance Or BindingFlags.DeclaredOnly Or BindingFlags.FlattenHierarchy) Dim mi As MethodInfo = myType.GetMethod("FindAll", flags) ' mi is nothing, wenn FindAll nicht in der abgeleiteten Klasse überladen wurde! Dim Entities As IList(Of T) = mi.Invoke(o, Nothing)
v = Me.C1TrueDBGrid1.Columns(ColumnName).ValueItems.Values For Each e As T In Entities v.Add(New C1.Win.C1TrueDBGrid.ValueItem(GetPropertyValue(e, "Id"), GetPropertyValue(e, "ShortText"))) Next
Me.C1TrueDBGrid1.Columns(ColumnName).ValueItems.Translate = True Catch ex As Exception MessageBox.Show(ex.Message, "Problem", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
Ich denke dass sich BindingFlags.DeclaredOnly und BindingFlags.FlattenHierarchy gegenseitig ausschließen. Lass mal BindingFlags.DeclaredOnly weg und probier nochmal. Siehe hier