public void Test()
        {
            var c = new SerializerTestCollection();

            Assert.AreEqual(0, c.Serializers.Count);
            var f = new TestSerializationFactory(c);

            Assert.AreEqual(1, c.Serializers.Count);
            Assert.IsInstanceOfType(c.Serializers[0], typeof(TestCollectionSerializer));

            var i = new SerializerTestItem();

            Assert.AreEqual(0, i.Serializers.Count);
            c.Add(i);
            Assert.AreEqual(1, i.Serializers.Count);
            Assert.IsInstanceOfType(i.Serializers[0], typeof(TestItemSerializer));
            TestItemSerializer s = (TestItemSerializer)i.Serializers[0];

            c.Remove(i);
            Assert.IsTrue(s.IsDisposed);
            Assert.AreEqual(0, i.Serializers.Count);

            i = new SerializerTestItem();
            c.Add(i);
            Assert.AreEqual(1, i.Serializers.Count);
            Assert.IsInstanceOfType(i.Serializers[0], typeof(TestItemSerializer));
            s = (TestItemSerializer)i.Serializers[0];

            f.Dispose();
            Assert.IsTrue(s.IsDisposed);
        }
        public void SerializationTest()
        {
            var i = new SerializerTestItem();
            var s = new TestItemSerializer(i);

            Assert.IsFalse(s.SerializerCalled);
            s.Serialize();
            Assert.IsTrue(s.SerializerCalled);

            Assert.IsFalse(s.DeserializerCalled);
            s.Deserialize();
            Assert.IsTrue(s.DeserializerCalled);

            s.SerializerCalled   = false;
            s.DeserializerCalled = false;


            s.IsEnabled = false;
            Assert.IsFalse(s.SerializerCalled);
            s.Serialize();
            Assert.IsFalse(s.SerializerCalled);

            Assert.IsFalse(s.DeserializerCalled);
            s.Deserialize();
            Assert.IsFalse(s.DeserializerCalled);

            s.SerializerCalled   = false;
            s.DeserializerCalled = false;


            s.IsEnabled = true;
            Assert.IsFalse(s.SerializerCalled);
            s.Serialize();
            Assert.IsTrue(s.SerializerCalled);

            Assert.IsFalse(s.DeserializerCalled);
            s.Deserialize();
            Assert.IsTrue(s.DeserializerCalled);



            s.Dispose();
            i.Dispose();
        }