Esempio n. 1
0
        public void BehaviorsCanFilterVirtualMethods()
        {
            var alpha = ClayActivator.CreateInstance <Anything>(new IClayBehavior[] {
                new InterfaceProxyBehavior(),
                new AnythingModifier()
            });

            dynamic   dynamically   = alpha;
            Anything  statically    = alpha;
            IClayPlus interfacially = alpha;

            Assert.That(dynamically.Hello, Is.EqualTo("[World]"));
            Assert.That(statically.Hello, Is.EqualTo("[World]"));
            Assert.That(interfacially.Hello, Is.EqualTo("[World]"));

            Assert.That(dynamically.Add(3, 4), Is.EqualTo(9));
            Assert.That(statically.Add(3, 4), Is.EqualTo(9));
            Assert.That(interfacially.Add(3, 4), Is.EqualTo(9));
            Assert.That(interfacially.Add(3, 5), Is.EqualTo(10));
            Assert.That(interfacially.Add(3, 6), Is.EqualTo(11));
        }
Esempio n. 2
0
        public void SubclassFromAnythingMembersRemainAvailableStaticallyAndDynamicallyAndViaInterface()
        {
            var alpha = ClayActivator.CreateInstance <Anything>(new[] { new InterfaceProxyBehavior() });
            var type  = alpha.GetType();

            Assert.That(type, Is.Not.EqualTo(typeof(Anything)));

            dynamic   dynamically   = alpha;
            Anything  statically    = alpha;
            IClayPlus interfacially = alpha;

            Assert.That(dynamically.Hello, Is.EqualTo("World"));
            Assert.That(statically.Hello, Is.EqualTo("World"));
            Assert.That(interfacially.Hello, Is.EqualTo("World"));

            Assert.That(dynamically.Add(3, 4), Is.EqualTo(7));
            Assert.That(statically.Add(3, 4), Is.EqualTo(7));
            Assert.That(interfacially.Add(3, 4), Is.EqualTo(7));
            Assert.That(interfacially.Add(3, 5), Is.EqualTo(8));
            Assert.That(interfacially.Add(3, 6), Is.EqualTo(9));
        }