public TMember GetFieldValue <TInstance, TMember>(MemberInfo memberInfo, TInstance instance) { var info = memberInfo as FieldInfo; if (info != null) { var fieldInfo = info; Func <object, object> getter; if (!_getterCache.TryGetValue(fieldInfo.FieldHandle.Value, out getter)) { _getterCache[fieldInfo.FieldHandle.Value] = EmitHelper.CreateFieldGetterHandler(fieldInfo); } return((TMember)getter(instance)); } else { throw new NotImplementedException(); } }
public TMember GetPropertyValue <TInstance, TMember>(PropertyInfo propertyInfo, TInstance instance) { if (propertyInfo != null) { var key = propertyInfo.GetGetMethod().MethodHandle.Value; Func <object, object> getter; if (!_getterCache.TryGetValue(key, out getter)) { getter = EmitHelper.CreatePropertyGetterHandler(propertyInfo); _getterCache[key] = getter; } if (getter == null) { return(default(TMember)); } return((TMember)getter(instance)); } throw new NotImplementedException(); }