
Zitat von
Khabarakh:
Auch sollte der Wrapper auf jeden Fall IList<T> implementieren, wodurch der Code aber schnell mal doppelt so lang wie bisher werden könnte

.
Naja, es gäbe da die Option das Tellerranddingsens als .Net im Allgemeinen aufzufassen und dann gäbe es eine weitere Sprache, die genau das vereinfacht.
Hier mal Pseudo code, wie eine Liste aussehen kann, deren Elementtyp zwar generisch ist, aber T muss mindestens Person oder ein Nachfahre sein und einen öffentlichen, parameterlosen Konstruktor besitzen:
Delphi-Quellcode:
type
PersonList<T> = public class(IList<T>)
where T is Person, T has constructor;
public
method AddNew : T;
method Add(item : T);
property Count : Integer
read Innerlist.Count;
property Item[index : Integer] : T
read InnerList[index]
write InnerList[index]; default;
protected
property InnerList : List<T> := new List<T>(); readonly;
implements IList<T>; // *plopp*, schon implementiert...
end;
implementation
method PersonList<T>.Add(item : T);
begin
Innerlist.Add(item);
end;
method PersonList<T>.AddNew : T;
begin
result := new T();
Add(result);
end;
OK, man hätte gleich von List<T> ableiten können... *g*