示例#1
0
        public static void Main(string[] args)
        {
            var EntryAssembly = Assembly.Load("Crucifere");

            VegetableFactory factory        = new VegetableFactory();
            ProxyGenerator   proxyGenerator = new ProxyGenerator();

            while (true)
            {
                try
                {
                    IVegetable legume = factory.Provide();

                    //Exemple avec Classe
                    //legume = proxyGenerator.CreateClassProxy(legume.GetType(), new BasicInterceptor()) as IVegetable;
                    //legume = proxyGenerator.CreateInterfaceProxyWithTarget(legume, new MaskInterceptor()) as IVegetable;

                    //Exemple avec interface seule
                    //legume = proxyGenerator.CreateInterfaceProxyWithoutTarget(typeof(IVegetable),new BasicInterceptor()) as IVegetable;

                    Console.WriteLine("Legume:" + legume.GetNom());
                    legume.Prix = 12;

                    Console.WriteLine("\n");
                }
                catch (Exception e)
                {
                    Console.WriteLine("GROSS ERROR:" + e.Message);
                    Console.WriteLine(e.ToString());
                }
                Thread.Sleep(2000);
            }
        }
示例#2
0
        public override void Run(IVegetable target)
        {
            // Exécution avec génération du proxy
            var swGeneration = new Stopwatch();

            swGeneration.Start();

            var proxy = _proxyGenerator.CreateInterfaceProxyWithTarget <IVegetable>(target, new PerfInterceptor());

            proxy.GetNom();

            swGeneration.Stop();
            // ----------------------------------

            // Exécution avec proxy déjà généré
            var swDejaGenere = new Stopwatch();

            swDejaGenere.Start();

            proxy.GetNom();

            swDejaGenere.Stop();
            // ----------------------------------

            // Exécution sans proxy
            var swNoProxy = new Stopwatch();

            swNoProxy.Start();

            target.GetNom();

            swNoProxy.Stop();
            // ----------------------------------


            Console.WriteLine("| {0, -11} " +
                              "| {1,11} | {2,11} | {3,11} |",
                              target.GetNom(),
                              swGeneration.Elapsed.Ticks.ToMilliseconds(),
                              swDejaGenere.Elapsed.Ticks.ToMilliseconds(),
                              swNoProxy.Elapsed.Ticks.ToMilliseconds());
            WriteSeparatorLine();

            _ticksGeneration.Add(swGeneration.Elapsed.Ticks);
            _ticksdejaGenere.Add(swDejaGenere.Elapsed.Ticks);
            _ticksNoProxy.Add(swNoProxy.Elapsed.Ticks);
        }
        public override void Run(IVegetable target)
        {
            var sw = new Stopwatch();

            sw.Start();

            target.GetNom();

            sw.Stop();

            Console.WriteLine("| {0, -11} | {1,11} |",
                              target.GetNom(),
                              sw.ElapsedTicks.ToMilliseconds());
            WriteSeparatorLine();

            _ticks.Add(sw.ElapsedTicks);
        }
示例#4
0
        public override void Run(IVegetable target)
        {
            var sw = new Stopwatch();

            sw.Start();

            var proxy = _proxyGenerator.CreateInterfaceProxyWithTarget <IVegetable>(target, new PerfInterceptor());

            proxy.GetNom();

            sw.Stop();

            Console.WriteLine("| {0, -11} | {1,11} |",
                              target.GetNom(),
                              sw.ElapsedTicks.ToMilliseconds());
            WriteSeparatorLine();

            _ticks.Add(sw.ElapsedTicks);
        }