public void TestDoubleSubscribeRemove()
        {
            TargetClass target = new TargetClass();
            MulticastWeakDelegate <Action> testInst = new MulticastWeakDelegate <Action>();

            testInst.Add(target.TestMethod);
            testInst.Add(target.TestMethod);
            testInst.Remove(target.TestMethod);
            testInst.GetDelegate()();
            Assert.AreEqual(1, target.CallCount);
        }
        public void TestCallStrongTwice()
        {
            int callCount = 0;

            MulticastWeakDelegate <Action> testInst = new MulticastWeakDelegate <Action>();

            testInst.Add(() => callCount++);
            testInst.Add(() => callCount++);

            var d = testInst.GetDelegate();

            Assert.IsNotNull(d);
            d();

            Assert.AreEqual(2, callCount);
        }
        private void Subscribe(MulticastWeakDelegate <Action> weakDeleg)
        {
            TargetClass target = new TargetClass();

            weakDeleg.Add(new Action(target.TestMethod));
        }