Пример #1
0
        /// <summary>
        /// 静态构造器
        /// </summary>
        static HttpContentExtensions()
        {
            var property = typeof(HttpContent).GetProperty("IsBuffered", BindingFlags.Instance | BindingFlags.NonPublic);

            if (property != null)
            {
                isBuffered = Lambda.CreateGetFunc <HttpContent, bool>(property);
            }
        }
Пример #2
0
        public void GetTest()
        {
            var model = new Model {
                name = "laojiu"
            };
            var p = model.GetType().GetProperty("name");

            var getter = Lambda.CreateGetFunc <Model, string>(p);
            var name   = getter.Invoke(model);

            Assert.True(name == model.name);


            var getter2 = Lambda.CreateGetFunc <object, string>(p);
            var name2   = getter2.Invoke(model);

            Assert.True(name2 == model.name);

            var getter3 = Lambda.CreateGetFunc <object, object>(p.DeclaringType, p.Name);
            var name3   = getter2.Invoke(model).ToString();

            Assert.True(name3 == model.name);

            var kv      = new KeyValuePair <string, int>("k", 10);
            var getter4 = Lambda.CreateGetFunc <object, object>(kv.GetType(), "Value");
            var value   = (int)getter4.Invoke(kv);

            Assert.True(value == kv.Value);

            var getter5 = Lambda.CreateGetFunc <object, int>(kv.GetType(), "Value");

            Assert.True(getter5.Invoke(kv) == kv.Value);

            var getter6 = Lambda.CreateGetFunc <object, long>(kv.GetType(), "Value");

            Assert.True(getter6.Invoke(kv) == kv.Value);
        }
Пример #3
0
 /// <summary>
 /// KeyValuePair读取器
 /// </summary>
 /// <param name="keyValuePairType">KeyValuePair的类型</param>
 private KeyValuePairReader(Type keyValuePairType)
 {
     this.keyGetter   = Lambda.CreateGetFunc <object, object>(keyValuePairType, "Key");
     this.valueGetter = Lambda.CreateGetFunc <object, object>(keyValuePairType, "Value");
 }