Exemple #1
0
        public void TestExternalize()
        {
            var stream = new MemoryStream();

            {
                var foo = new Foo();
                var bar = new Bar();

                foo.Value = 5;
                bar.Value = 10;
                foo.Bar   = bar;

                var externalizer = new Externalizer();
                var proxy        = new FooProxy(foo, SaveFoo, LoadFoo);
                var mem          = externalizer.Save(proxy);

                var formatter = new BinaryFormatter();
                formatter.Serialize(stream, mem);
            }

            stream.Position = 0;
            {
                var formatter = new BinaryFormatter();
                var mem       = formatter.Deserialize(stream) as IMemento;

                var externalizer = new Externalizer();
                var proxy        = externalizer.Load(mem) as FooProxy;

                var foo = proxy.Real;
                Assert.AreEqual(5, foo.Value);
                Assert.AreEqual(10, foo.Bar.Value);
            }
        }
 // ========================================
 // constructor
 // ========================================
 internal ExternalizeContext(
     Externalizer owner,
     ExternalizableFilter externalizableFilter,
     MementoFilter mementoFilter
     )
 {
     _owner = owner;
     _externalizableFilter = externalizableFilter;
     _mementoFilter        = mementoFilter;
 }
        public void TestExternalize()
        {
            var stream = new MemoryStream();

            {
                var foo = new Foo();
                var bar = new Bar();

                foo.Value = 5;

                bar.Value = 10;
                foo.Bar   = bar;

                foo.Bars.Add(new Bar()
                {
                    Value = 9,
                });
                foo.Bars.Add(new Bar()
                {
                    Value = 99,
                });
                foo.Bars.Add(new Bar()
                {
                    Value = 999,
                });

                var externalizer = new Externalizer();
                var mem          = externalizer.Save(foo);

                var formatter = new BinaryFormatter();
                formatter.Serialize(stream, mem);
            }

            stream.Position = 0;
            {
                var formatter = new BinaryFormatter();
                var mem       = formatter.Deserialize(stream) as IMemento;

                var externalizer = new Externalizer();
                var foo          = externalizer.Load(mem) as Foo;
                Assert.AreEqual(5, foo.Value);
                Assert.AreEqual(10, foo.Bar.Value);
                Assert.AreEqual(3, foo.Bars.Count);
                Assert.AreEqual(9, foo.Bars[0].Value);
                Assert.AreEqual(99, foo.Bars[1].Value);
                Assert.AreEqual(999, foo.Bars[2].Value);
            }
        }
        public void TestExternalizeFilter()
        {
            var persister = new Externalizer();
            var foo       = new Foo();
            var bar       = new Bar();

            foo.Value = 5;
            bar.Value = 10;
            foo.Bar   = bar;
            bar.Foo   = foo;

            var memento = persister.Save(foo, (key, ex) => key != "Bar");
            var ofoo    = persister.Load(memento) as Foo;

            Assert.AreNotEqual(foo, ofoo);
            Assert.AreEqual(null, ofoo.Bar);
            Assert.AreEqual(5, ofoo.Value);
        }