Example #1
0
        /// <summary>
        /// Add property setter for property, use the Resolver to determine the value of the property
        /// </summary>
        /// <typeparam name="TPropertyType"></typeparam>
        /// <param name="propertyExpression"></param>
        public static void AddPropertySetter <TPropertyType>(Expression <Func <T, TPropertyType> > propertyExpression)
            where TPropertyType : class
        {
            Expression <Func <TPropertyType> > setter = () => GenericResolver <TPropertyType> .Resolve();

            AddPropertySetterInner <TPropertyType>(propertyExpression, setter);
        }
Example #2
0
        public void TestMethod2()
        {
            //var s1 = GenericResolver<TestClass>.Resolve();


            GenericResolver <IYY> .SetResolver(() => new YY { Details = "From Factory" });

            GenericResolver <IYY> .AddPropertySetter(v => v.Details, () => DateTime.Now.ToString());

            GenericResolver <IYY> .AddPropertySetter(v => v.XXObject);

            GenericResolver <IXX> .SetResolver(() => new XX { Description = "From Factory" });

            var z1 = GenericResolver <TestClassComplexConstructor> .Resolve();

            Thread.Sleep(1000);
            var z2 = GenericResolver <TestClassComplexConstructor> .Resolve();

            Thread.Sleep(1000);
            var z3 = GenericResolver <TestClassComplexConstructor> .Resolve();

            Thread.Sleep(1000);
            var z4 = GenericResolver <TestClassComplexConstructor> .Resolve();

            Thread.Sleep(1000);
            var z5 = GenericResolver <TestClassComplexConstructor> .Resolve();



            var stopwatch = new Stopwatch();

            stopwatch.Start();
            for (int i = 0; i < 1000000; i++)
            {
                var zz = GenericResolver <TestClassComplexConstructor> .Resolve();
            }
            Debug.Print("Generic Milliseconds: {0}", stopwatch.ElapsedMilliseconds);
            stopwatch.Start();
            for (int i = 0; i < 1000000; i++)
            {
                var zz = new TestClass();
            }
            Debug.Print("New Milliseconds: {0}", stopwatch.ElapsedMilliseconds);

            var unityObject = new UnityContainer();

            unityObject.RegisterType <IXX, XX>()
            .RegisterType <IYY, YY>()
            .RegisterType <TestClassComplexConstructor, TestClassComplexConstructor>(new InjectionFactory(v => new TestClassComplexConstructor(unityObject.Resolve <IXX>(), unityObject.Resolve <IYY>())));

            stopwatch.Start();
            for (int i = 0; i < 1000000; i++)
            {
                var zz = unityObject.Resolve <TestClassComplexConstructor>();
            }
            Debug.Print("Unity Milliseconds: {0}", stopwatch.ElapsedMilliseconds);
        }