Hallo,
ich habe eine Liste mit unterschiedlichen Elementen (List<T>), welche für jeden Typ eine Factory bereit stellen soll:
Code:
class list<T> where T: new(p1, p2, p3) {
class elem<T> {
public elem(p1, p2, p3): base(p1, p2, p3) {}
public T newInstance() {
return new T(p1, p2, p3);
}
...
}
...
}
Logisch könnte der Spaß wie oben aussehen, aber C# lässt die Definition für T "new(p1, p2, p3) nicht zu.
Geht das unter Delphi (Prism)?
Ist es überhaupt möglich?
Ich persönlich erkenne kein technisches Hindernis, welches dieses Konstrukt unmöglich machen könnte.
Oder kennt ihr "Umwege", die das realisieren, was ich vorhabe?
Ich möchte NICHT, dass die Factories in den konkreten Typen (welche später <T> ersetzen) eingebettet werden müssen, da diese Factories (indirekten Konstruktoren) public sein müssen (es soll aber nicht jeder eine "Kopie" ohne "new" erstellen dürfen).
Meine derzeitiger Workaround besteht aus Delegates, die ich newInstance übergebe.
Ist aber auch nicht die Lösung, da die Delegates von außen (vom Listen-Nutzer) übergeben werden müssen.
Ich danke euch und freue mich über jede Idee