Beispiel #1
0
        public void DynamicMethodFactory_CreatePropertyGetter()
        {
            object           obj              = null;
            int              value            = 5;
            PropertyInfo     vo               = typeof(User).GetProperties().FirstOrDefault(f => f.Name == "Age");
            GetValueDelegate getValueDelegate = DynamicMethodFactory.CreatePropertyGetter(vo);
            User             user             = new User();

            user.Age = value;

            if (getValueDelegate != null)
            {
                obj = getValueDelegate(user);
            }
            Assert.Equal(value, obj);
        }
    public static object FastGetValue(this PropertyInfo propertyInfo, object obj)
    {
        if (propertyInfo == null)
        {
            throw new ArgumentNullException(nameof(propertyInfo));
        }

        GetValueDelegate getter = (GetValueDelegate)GetterDic[propertyInfo];

        if (getter == null)
        {
            getter = DynamicMethodFactory.CreatePropertyGetter(propertyInfo);
            GetterDic[propertyInfo] = getter;
        }

        return(getter(obj));
    }
Beispiel #3
0
        public void DynamicMethodFactory_CreatePropertyGetter_VO_STRING()
        {
            object       obj      = null;
            string       value    = "ABC";
            PropertyInfo vo       = typeof(User).GetProperties().FirstOrDefault(f => f.Name == "Address");
            PropertyInfo property = typeof(Address).GetProperties().FirstOrDefault(f => f.Name == "Street");

            GetValueDelegate getValueDelegate = DynamicMethodFactory.CreatePropertyGetter(vo, property);
            User             user             = new User();

            user.Address        = new Address();
            user.Address.Street = value;

            if (getValueDelegate != null)
            {
                obj = getValueDelegate(user);
            }

            Assert.Equal(obj, value);
        }
Beispiel #4
0
        static string Test_GetProperty(int count)
        {
            StringBuilder sb = new StringBuilder(System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion());

            sb.AppendLine();
            sb.AppendLine("Test_SetProperty");
            OrderInfo        testObj  = new OrderInfo();
            PropertyInfo     propInfo = typeof(OrderInfo).GetProperty("OrderID");
            int              orderId  = 0;
            GetValueDelegate getter2  = DynamicMethodFactory.CreatePropertyGetter(propInfo);

            sb.Append("EmitGet花费时间:        ");
            Stopwatch watch2 = Stopwatch.StartNew();

            for (int i = 0; i < count; i++)
            {
                orderId = (int)getter2(testObj);
            }
            watch2.Stop();
            sb.AppendLine(watch2.Elapsed.ToString());
            return(sb.ToString());
        }