[NUI] Add non-generic WeakEventProxy
authorJiyun Yang <ji.yang@samsung.com>
Tue, 1 Aug 2023 05:05:55 +0000 (14:05 +0900)
committertscholb <scholb.kim@samsung.com>
Tue, 1 Aug 2023 07:13:54 +0000 (16:13 +0900)
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
src/Tizen.NUI/src/internal/Common/WeakEvent.cs

index a2745cf..e886b93 100755 (executable)
@@ -130,4 +130,39 @@ namespace Tizen.NUI
             Invoke(sender, args as EventArgs);
         }
     }
+
+    /// <summary>
+    /// The non-generic version of <see cref="WeakEventProxy"/>.
+    /// </summary>
+    internal abstract class WeakEventProxy : WeakEvent<EventHandler>
+    {
+        protected abstract void ConnectToEvent(EventHandler handler);
+
+        protected abstract void DisconnectToEvent(EventHandler handler);
+
+        public override void Add(EventHandler handler)
+        {
+            if (Count == 0)
+            {
+                ConnectToEvent(OnEventInvoked);
+            }
+
+            base.Add(handler);
+        }
+
+        public override void Remove(EventHandler handler)
+        {
+            base.Remove(handler);
+
+            if (Count == 0)
+            {
+                DisconnectToEvent(OnEventInvoked);
+            }
+        }
+
+        private void OnEventInvoked(object sender, EventArgs args)
+        {
+            Invoke(sender, args);
+        }
+    }
 }