public static object SetSlice(object target, string name, object[] 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])); } Type type = target.GetType(); if ("" == name) { if (IsSetArraySlice(target, args)) { return(SetArraySlice(target, args)); } name = GetDefaultMemberName(type); } MemberInfo member = SelectSliceMember(GetMember(type, name), ref args, SetOrGet.Set); return(SetSlice(target, member, args)); }