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); } }
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); }
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); }