Hallo Leute,
für ein etwas spezielles Projekt benötige ich folgende Funktionalität: Ich möchte zur Laufzeit den Weg zu einem Property/Wert festlegen. Es gibt dabei drei mögliche Ursprünge: 1. Es ist ein konstanter Wert (z.B. 25.0f) 2. Er ist in einem Übergabeparameter (das sind jeweils drei Verschiede) oder 3. in einer Statischen-Klasse. Bei den beiden letzten Lösungen gibt es das Problem dass man da dann einen Pfad festlegen muss an dessen Ende ein Property steht (z.B. Property ist in ÜbergabeparameterA->ObjectPropertyA->ObjectPropertyD->TargetProperty). Ich bin etwas überfragt wie ich diesen Abbilden soll. Und hoffe einer von euch hat da eine gute Idee.
Sinn ist das man in einer Applikation einen Ablauf festlegen kann und diese zweite Applikation wertet dies dann zur Auswertung aus. Geht so in die Richtung grafisch Programme anfertigen zu können (nur damit ihr eine Vorstellung habt, ist etwas speziell).
Danke schon mal!
Grüße
Nils
HAllo,
leider kann ich mir niocht genau vorstellen was du vorhast, kannst du uns mal ein beispiel geben?
mfg
serial
Hallo!
Leider erschließt sich auch mir aufgrund der Erklärung nicht genau das Ziel. Willst du die Properties in einer Hierarchie speichern und dann mittels Pfad (z.B. "/Root/Category/Sub-Category/KeyName") abrufen?
Nobody is perfect. I'm sad, i'm not nobody 🙁
Vielleicht habe ich eher meine eigentliche Frage in zu viel drum herum versteckt. Ich versuche es daher mal einfacher:
Ich habe eine Funktion void DoWork(IParameter p1, IParameter p2, IParameter p3).
Das Interface IParameter definiert nur ein paar Basis Funktionalitäten. Die Implementierung eines solchen Parameters kann ein sehr umfangreiches Objekt sein welches wiederum eigene komplexe Typen beinhaltet. Nehmen wir mal an Klasse A Implementiert das Interface IParameter. Und beinhaltet jetzt ein Objekt der Klasse Foo diese Klasse Foo beinhaltet ein Objekt der Klasse Bar und diese Klasse Bar beinhaltet ein Property mit dem Namen Value vom Type Int32.
Die Funktion DoWork soll nun mit den Werten aus dem Property Int32 arbeiten. Hat aber keine Ahnung über die ganzen anderen Typen die es da so gibt (dynamisch als Plugin dazu geladen, etc. pp.) Jetzt soll man der Klasse in der die Funktion DoWork enthalten eine Konfiguration mitgeben die den Weg zu diesem Property beschreibt. Und genau da hakt es ein wenig. Wie beschreibt man so einen Weg?
Da hast du meiner Meinung nach nur drei Optionen:
Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat
Was spricht gegen eine GetInt32-Methode (oder Property, je nachdem) im IParameter Interface, die deine entsprechenden Werte zurückliefert (dann interessiert dich im DoWork nämlich auch nicht mehr, ob das Ding Value, Nested.SomeOtherClass.MyIntProperty oder MyCoolInteger heißt).
Formuliere dein Beispiel lieber direkt als Beispielcode, der wäre deutlich schneller zu verstehen als der Text.
Mit der Anleitung aus deinem Text löse ich das ganze einfach so:
class Worker {
ParameterPath p1Path; // Wird nicht benötigt.
ParameterPath p2Path; // Wird nicht benötigt.
ParameterPath p3Path; // Wird nicht benötigt.
DoWork(IParameter p1, IParameter p2, IParameter p3) {
int myInt = p1.IntProperty;
// Do smth. with myInt
}
}
public interface IParameter {
int IntProperty{ get; set; }
}
public class A : IParameter {
Foo myFoo;
int IntProperty{ get {return myFoo.MyBar.Value; } }
}
public class Foo {
Bar myBar;
public Bar MyBar{ return myBar; }
}
public class Bar {
public int Value { get return 10; }
}