コード例 #1
0
        public static bool TrySetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, object value)
        {
            SetMemberBinder binder = (SetMemberBinder)BinderWrapper.SetMember(name, value.GetType());

            var setterSite = CallSite <Func <CallSite, object, object, object> > .Create(new NoThrowSetBinderMember(binder));

            object result = setterSite.Target(setterSite, dynamicProvider, value);

            return(!ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult));
        }
コード例 #2
0
        public static bool TrySetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, object value)
        {
            ValidationUtils.ArgumentNotNull(dynamicProvider, "dynamicProvider");

            SetMemberBinder binder = (SetMemberBinder)BinderWrapper.SetMember(name, typeof(DynamicUtils));

            var setterSite = CallSite <Func <CallSite, object, object, object> > .Create(new NoThrowSetBinderMember(binder));

            object result = setterSite.Target(setterSite, dynamicProvider, value);

            return(!ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult));
        }
コード例 #3
0
        public static bool TryGetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, out object value)
        {
            GetMemberBinder getMemberBinder = (GetMemberBinder)BinderWrapper.GetMember(name, typeof(DynamicUtils));

            CallSite <Func <CallSite, object, object> > callSite = CallSite <Func <CallSite, object, object> > .Create(new NoThrowGetBinderMember(getMemberBinder));

            object result = callSite.Target(callSite, dynamicProvider);

            if (!ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult))
            {
                value = result;
                return(true);
            }
            else
            {
                value = null;
                return(false);
            }
        }