Browse Source

Merge pull request #145 from DiogoAiresCardoso/develop

Adjust on release instances when is object singleton and interfaced
Exilon 1 tháng trước cách đây
mục cha
commit
e7cbf836f6
1 tập tin đã thay đổi với 9 bổ sung3 xóa
  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;