示例#1
0
        public void ExecuteTest()
        {
            try
            {
                Type mockType = typeof(Mock);
                var  mock     = new Mock();
                var  set      = mockType.GetProperty("Sum").GetSetMethod();
                DynamicMethodExecutor executor = new DynamicMethodExecutor(set);
                Action action = () =>
                {
                    for (int i = 0; i < 100000; i++)
                    {
                        executor.Execute(mock, new object[] { i });
                    }
                };

                this.TestContext.WriteLine(action.Elapsed(1, false).ToString());
            }
            catch (Exception ex)
            {
                TestContext.WriteLine(ex.ToString());
                TestContext.WriteLine(ex.GetType().Name);
            }

            try
            {
                Type   mockType = typeof(Mock);
                var    mock     = new Mock();
                var    set      = mockType.GetProperty("Sum").GetSetMethod();
                Action action   = () =>
                {
                    for (int i = 0; i < 100000; i++)
                    {
                        set.Invoke(mock, new object[] { i });
                    }
                };
                this.TestContext.WriteLine(action.Elapsed(1, false).ToString());
            }
            catch (Exception ex)
            {
                TestContext.WriteLine(ex.ToString());
                TestContext.WriteLine(ex.GetType().Name);
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            int times = 2;
            DynamicMethodExecutor executor = new DynamicMethodExecutor(typeof(Program).GetMethod("Call"));
            Stopwatch             watch3   = new Stopwatch();

            watch3.Start();
            for (int i = 0; i < times; i++)
            {
                executor.Execute(new Program(), new object[3] {
                    "test", "", ""
                });
            }
            watch3.Stop();
            Console.WriteLine(watch3.Elapsed + " (Dynamic executor)");


            ModelBinderFactory.Current.SetModelBinder(new DefaultModelBinder());//a way set selfdefined modelbinder,you can ignore it
            IConfigurationSource src = ConfigurationManager.GetSection("DataAccess") as IConfigurationSource;

            DriverBase db = DatabaseFactory.CreateDriver(src);

            //DataTable dt = db.GetDataTable("select employeeid,lastname,firstname from dbo.Employees");
            //IEnumerable<Employee> list = db.FindAll<Employee>("select employeeid,lastname,firstname from dbo.Employees");
            //int count = 0;
            //IEnumerable<Employee> list = db.PagerList<Employee>("select employeeid,lastname,firstname from dbo.Employees", 1, count, "employeeid");
            System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
            timer.Start();
            //int count;
            //IEnumerable<Blog> list = db.SetPageSize(1)
            //                           .PagerList<Blog>("select * from blog", 1,out count);
            // DataTable dt = db.GetDataTable("select * from blog");
            IEnumerable <Blog> list = db.FindAll <Blog>("select * from blog");

            timer.Stop();

            Console.WriteLine("first timespan:" + timer.Elapsed);

            timer.Reset();

            timer.Start();
            list = db.FindAll <Blog>("select * from blog");
            timer.Stop();

            Console.WriteLine("second timespan:" + timer.Elapsed);

            // list = db.FindAll<Employee>("select employeeid,lastname,firstname from dbo.Employees");

            //foreach (Employee model in DefaultModelBinder.BindModel<Employee>(dt))
            //{
            //    Console.WriteLine(model.FirstName);
            //}

            //Console.WriteLine("Count:"+count);

            //foreach (Blog model in list)
            //{
            //    Console.WriteLine(model.Name);
            //}

            //foreach (DataRow dr in dt.Rows)
            //{
            //    foreach (DataColumn dc in dt.Columns)
            //    {
            //        Console.Write(dc.ColumnName + ":" + dr[dc.ColumnName] + "\t");
            //    }
            //    Console.WriteLine();
            //}

            //Console.WriteLine("Run 1 - configuration with xml file");
            //using (WindsorContainer container = new WindsorContainer("castle.config"))
            //{
            //    container.AddFacility<LoggingFacility>(f => f.UseLog4Net());
            //    ISomething something = container.Resolve<ISomething>();
            //    something.DoSomething("");
            //    Console.WriteLine("Augment 10 returns " + something.Augment(10));
            //}

            //Console.WriteLine("Run 2 - configuration fluent");
            //using (WindsorContainer container = new WindsorContainer())
            //{
            //    container.Register(
            //        Component.For<IInterceptor>()
            //        .ImplementedBy<BetterDumpInterceptor>()
            //        .Named("myinterceptor"));
            //    container.Register(
            //        Component.For<ISomething>()
            //        .ImplementedBy<Something>()
            //        .Interceptors(InterceptorReference.ForKey("myinterceptor")).Anywhere);
            //    ISomething something = container.Resolve<ISomething>();
            //    something.DoSomething("");
            //    Console.WriteLine("Augment 10 returns " + something.Augment(10));
            //}

            //Console.WriteLine("Run 3 - configuration fluent");
            //using (WindsorContainer container = new WindsorContainer())
            //{
            //    Dictionary<Type, List<String>> RegexSelector = new Dictionary<Type, List<string>>();
            //    RegexSelector.Add(typeof(DumpInterceptor), new List<string>() { "DoSomething" });
            //    RegexSelector.Add(typeof(LogInterceptor), new List<string>() { "Augment" });
            //    InterceptorSelector selector = new InterceptorSelector(RegexSelector);

            //    container.Register(
            //        Component.For<IInterceptor>()
            //        .ImplementedBy<DumpInterceptor>()
            //        .Named("myinterceptor"));

            //    container.Register(
            //      Component.For<IInterceptor>()
            //      .ImplementedBy<LogInterceptor>()
            //      .Named("LogInterceptor"));

            //    container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));

            //    container.Register(
            //     Component.For<ISomething>()
            //              .ImplementedBy<Something>()
            //              .Interceptors(InterceptorReference.ForKey("myinterceptor") ,
            //              InterceptorReference.ForKey("LogInterceptor")
            //    )
            //    .SelectedWith(selector).Anywhere);

            //    ISomething something = container.Resolve<ISomething>();
            //    something.DoSomething("");
            //    Console.WriteLine("Augment 10 returns " + something.Augment(10));
            //}

            Console.ReadKey();
        }