Ich würde eher empfehlen die Referenzzählung des Interfaces zu verändern (in _AddRef/_Release abzuschalten), anstatt nachträglich an der Verwaltung der Variablen/Funktionsergebnisse rumzupfuschen.
(es heißt nicht umsonst "It is considered dangerous and its use is not recommended")
Außerdem ist bei Verwendung von Generics an Interfaces es zu bevorzugen die GUIDs nicht hart im Generic zu hinterlegen, sondern erst in den nichtgenerischen Nachfahren anzugeben,
denn IFoo<Integer> und IFoo<string> haben die
selbe GUID und diese
UID soll ja eigentlich "eindeutig" sein, was sie hier aber nicht ist.