public override DynamicMetaObject BindGetMember(GetMemberBinder binder)
{
var propertyName = binder.Name;
var propertyType = binder.ReturnType;
RegisterPropertyIfNotYetRegistered(propertyName, propertyType);
var parameters = new Expression[]
{
Expression.Constant(propertyName)
};
var self = Expression.Convert(Expression, LimitType);
var methodCall = Expression.Call(self, _getValueFastMethodInfo, parameters);
var restrictions = BindingRestrictions.GetTypeRestriction(Expression, LimitType);
var getValue = new DynamicMetaObject(methodCall, restrictions);
return getValue;
}