public void Test()
        {
            var derived = new MyDerivedDataContract <int> ();

            Assert.That(Serialize <MyDataContractCollection <int> > (derived),
                        InstanceOf(typeof(SerializationException)), "#5");
        }
        public void TestCollectionDataContract()
        {
            Assert.That(Serialize <MissingAddMethod <int> > (new MissingAddMethod <int> ()),
                        InstanceOf(typeof(InvalidDataContractException)), "#1");
            Assert.That(Serialize <MissingEnumerable <int> > (new MissingEnumerable <int> ()),
                        InstanceOf(typeof(InvalidDataContractException)), "#2");

            var array       = new[] { 1, 2, 3 };
            var arrayResult = (string)Serialize <int[]> (array);
            var collection  = new MyDataContractCollection <int> (array);

            var result = Serialize <MyDataContractCollection <int> > (collection);

            Assert.That(result, InstanceOf(typeof(string)), "#3");

            Assert.That(Serialize <MyDataContractCollection <int> > (array),
                        InstanceOf(typeof(SerializationException)), "#4");

            var derived = new MyDerivedDataContract <int> ();

            Assert.That(Serialize <MyDataContractCollection <int> > (derived),
                        InstanceOf(typeof(SerializationException)), "#5");

            try {
                Deserialize <MyDataContractCollection <int> > (arrayResult);
                Assert.Fail("#6");
            } catch (Exception ex) {
                Assert.That(ex, InstanceOf(typeof(SerializationException)), "#7");
            }

            var deserialized = Deserialize <MyDataContractCollection <int> > ((string)result);

            Assert.That(deserialized, InstanceOf(typeof(MyDataContractCollection <int>)), "#8");
        }