/// <summary> /// 静态构造器 /// </summary> static HttpContentExtensions() { var property = typeof(HttpContent).GetProperty("IsBuffered", BindingFlags.Instance | BindingFlags.NonPublic); if (property != null) { isBuffered = Lambda.CreateGetFunc <HttpContent, bool>(property); } }
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); }
/// <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"); }