Inheritance: IQuackFu
Exemplo n.º 1
0
        public static object SetProperty(object target, string name, object value)
        {
            if (value is IgnoreNull)
            {
                value = IgnoreNull.ExtractTarget((IgnoreNull)value);
            }

            var duck = target as IQuackFu;

            if (null != duck)
            {
                return(duck.QuackSet(name, null, value));
            }

            var type = target as Type;

            if (null == type)
            {
                target.GetType().InvokeMember(name,
                                              ResolveFlagsToUse(target.GetType(), SetPropertyBindingFlags),
                                              null,
                                              target,
                                              new[] { value });
            }
            else
            {
                // static member
                type.InvokeMember(name,
                                  SetPropertyBindingFlags,
                                  null,
                                  null,
                                  new[] { value });
            }
            return(value);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="BrailViewComponentContext"/> class.
 /// </summary>
 /// <param name="parent">The parent.</param>
 /// <param name="body">The body.</param>
 /// <param name="name">The name.</param>
 /// <param name="text">The text.</param>
 /// <param name="parameters">The parameters.</param>
 public BrailViewComponentContext(BrailBase parent, ICallable body,
                                  string name, TextWriter text, IDictionary parameters)
 {
     this.parent         = parent;
     this.body           = body;
     componentName       = name;
     default_writer      = text;
     componentParameters = IgnoreNull.ReplaceIgnoreNullsWithTargets(parameters);
 }
Exemplo n.º 3
0
        public static object Invoke(object target, string name, object[] args)
        {
            args = IgnoreNull.ReplaceIgnoreNullsWithTargets(args);

            var duck = target as IQuackFu;

            if (null != duck)
            {
                return(duck.QuackInvoke(name, args));
            }


            var type = target as Type;

            if (null != type)
            {
                // static method
                return(type.InvokeMember(name,
                                         InvokeBindingFlags,
                                         null,
                                         null,
                                         args));
            }
            if (target == null)
            {
                throw new NullReferenceException("Could not invoke method " + name + " on null target");
            }

            var targetType = target.GetType();

            if (args.Length == 2 &&
                args[0] is string &&
                name == "op_Addition")
            {
                return(((string)args[0]) + args[1]);
            }
            return(targetType.InvokeMember(name,
                                           ResolveFlagsToUse(targetType, InvokeBindingFlags),
                                           null,
                                           target,
                                           args));
        }
Exemplo n.º 4
0
        public static object SetSlice(object target, string name, object[] args)
        {
            args = IgnoreNull.ReplaceIgnoreNullsWithTargets(args);
            var duck = target as IQuackFu;

            if (null != duck)
            {
                return(duck.QuackSet(name, (object[])RuntimeServices.GetRange2(args, 0, args.Length - 1), args[args.Length - 1]));
            }

            var type = target.GetType();

            if ("" == name)
            {
                if (IsSetArraySlice(target, args))
                {
                    return(SetArraySlice(target, args));
                }
                name = GetDefaultMemberName(type);
            }
            var member = SelectSliceMember(GetMember(type, name), ref args, SetOrGet.Set);

            return(SetSlice(target, member, args));
        }
Exemplo n.º 5
0
		/// <summary>
		/// Gets the underlying target object of the IgnorNull
		/// </summary>
		/// <param name="ignored"></param>
		/// <returns>target</returns>
		public static Object ExtractTarget(IgnoreNull ignored)
		{
			return ignored.target;
		}
Exemplo n.º 6
0
 /// <summary>
 /// Gets the underlying target object of the IgnorNull
 /// </summary>
 /// <param name="ignored"></param>
 /// <returns>target</returns>
 public static Object ExtractTarget(IgnoreNull ignored)
 {
     return(ignored.target);
 }