Der Scope auf
Rtti.TValue ist näher als der auf den generischen Typparameter TValue. Also entweder umbenennen oder
Rtti in das Interface uses verschieben. Diese Problematik hab ich auch schon of genug in meinem Dictionary Code gehabt.
Edit: Habs mal getestet, verschieben der
unit bringt nichts. Ich würde die Klasse die das
Rtti.TValue benutzt in eine andere
Unit verfrachten, so dass sie nicht kollidieren - oder den generischen parameter umnennen, ich hab das mal so gelöst gehabt: map<tkey,t>
Übrigens die Schleife über die Keys und dann das Lookup jedes Wertes ist denkbar inperformant. Dann doch lieber direkt mit einer TPair<TKey,TValue> variable per for in über das Dictionary.