Selaa lähdekoodia

Adjust on release instances when is object singleton and interfaced

Diogo Aires 8 kuukautta sitten
vanhempi
sitoutus
cb649c8f78
1 muutettua tiedostoa jossa 9 lisäystä ja 3 poistoa
  1. 9 3
      Quick.IOC.pas

+ 9 - 3
Quick.IOC.pas

@@ -467,9 +467,15 @@ begin
     if fDependencyOrder[i] <> nil then
     begin
       //free singleton instances not interfaced
-      if (fDependencyOrder[i] is TIocRegistrationInstance) and
-          (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then
-            TIocRegistrationInstance(fDependencyOrder[i]).Instance.Free;
+      if (fDependencyOrder[i] is TIocRegistrationInstance) and 
+        (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then
+          TIocRegistrationInstance(fDependencyOrder[i]).Instance.Free
+      else
+      //free singleton instances interfaced
+      if (fDependencyOrder[i] is TIocRegistrationInterface) and 
+        (TIocRegistrationInterface(fDependencyOrder[i]).IsSingleton) and 
+        (Assigned(TIocRegistrationInterface(fDependencyOrder[i]).Instance)) then
+          TIocRegistrationInterface(fDependencyOrder[i]).Instance._Release;
       fDependencyOrder[i].Free;
     end;
   end;