Преглед на файлове

Adjust on release instances when is object singleton and interfaced

Diogo Aires преди 10 месеца
родител
ревизия
cb649c8f78
променени са 1 файла, в които са добавени 9 реда и са изтрити 3 реда
  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;