Nochmal etwas anders gefragt: Ich suche einen Code, der das unten
stehende Beispiel auflöst. Die Lösung braucht keine direkten
Definitionen (Dim) haben, muss nicht Syntax-Korrekt oder Lauffähig sein
= <pseudocode>
Mir reichen ein paar Anhaltspunkte oder Ideen, um das gut zu lösen.
Daten vereinfacht:
1 | Type = "Object"
|
2 | ├MemberName = "Equals"
|
3 | ├ReturnType = "Boolean"
|
4 | ├Par1.Name = "objA"
|
5 | ├Par1.Type = "Object"
|
6 | ├Par2.Name = "objB"
|
7 | └Par2.Type = "Object"
|
Unterschiedliche MemberTypen (Method, Event, Property, etc) bieten
natürlich unterschiedliche Funktionen und Eigenschaften, die jedoch in
der "Basisklasse" MemberInfo vereinheitlicht sind, und sich daher in
"Dim TrueMember As MemberInfo" speichern lassen sollten:
Code vereinfacht:
1 | Dim TrueMember As MemberInfo = Nothing
|
2 | For Each Member As MemberInfo In Type
|
3 | '# Richtigen Member anhand der Parameter finden:
|
4 | <WhatIsAGoodWayToFindTheMember?>
|
5 | If <Member.Name = MemberName> Then
|
6 | For Each Parameter As ParameterInfo in Member.
|
7 | If <Parameter.Name = Par1.Name> Then
|
8 | If <Parameter.ReturnType = Par1.Type>
|
9 | <!=SoTiefVerschachtelt??>
|
10 | <TrueMember = Member>
|
11 | Exit For
|
12 | End If
|
13 | End If
|
14 | Next Parameter
|
15 | End If
|
16 | Next Member
|
17 | <...>
|
18 | TrueMember.invoke(<Parameters>)
|
..."TrueMember" sollte dann (als Beispiel) die "Equals"-Methode zur
Verfügung stellen bzw. bereithalten, die zwei Parameter benötigt! Wie
finde ich diese am besten heraus = ? Ich glaube meine Vorgehensweise mit
der tiefen Verschachtelung ist nicht richtig bzw. zu umständlich, aber
ich finde kein passendes Beispiel im Netz...
[Edit:Schönheitsfehler + Anmerkung]
Noch zur Anmerkung: Das Laden & Speichern, das Datenmodell, dessen
Serialisierung oder andere beteiligte Vorgänge sind nicht das Problem
bzw. Thema des Threads. Sorry falls ich da zu weit ausgeholt habe.
Lediglich die Frage, ob die String-Daten dann auch reichen, und das
Auffinden eines Members anhand der Parameter (<pseudo>Codebeispiel),
bereitet mir gerade etwas Kopfschmerzen ^^
Wenn jemand einen Tipp hat, <positive Standardfloskeln> Danke