Example #1
0
        public ExpandedMemberData(ParameterMemberData ep, string name)
        {
            Name = name;
            var Member = ep.ParameterizedMembers.First().Member;

            epName         = ep.Name;
            TypeDescriptor = Member.TypeDescriptor;
            var attrs = Member.Attributes.ToList();

            attrs.RemoveIf <object>(x => x is DisplayAttribute);

            var dis = ep.Attributes.OfType <DisplayAttribute>().FirstOrDefault();

            if (dis == null)
            {
                dis = Member.GetDisplayAttribute();
            }

            attrs.Add(new DisplayAttribute(dis.Name, Description: dis.Description, Order: 5, Groups: dis.Group));
            if (attrs.Any(x => x is ColumnDisplayNameAttribute))
            {
                var colAttr = (ColumnDisplayNameAttribute)attrs.FirstOrDefault(x => x is ColumnDisplayNameAttribute);
                attrs.Remove(colAttr);

                var newColAttr = new ColumnDisplayNameAttribute(ep.Name, colAttr.Order, colAttr.IsReadOnly);
                attrs.Add(newColAttr);
            }

            Attributes = attrs;
        }
 public static void UnparameterizeMember(ParameterMemberData parameterMember, IMemberData delMember, object delSource)
 {
     if (parameterMember == null)
     {
         throw new ArgumentNullException(nameof(parameterMember));
     }
     if (parameterMember == null)
     {
         throw new Exception($"Member {parameterMember.Name} is not a forwarded member.");
     }
     if (parameterMember.RemoveMember(delMember, delSource))
     {
         RemovedDynamicMember(parameterMember.Target, parameterMember);
     }
 }
        public static ParameterMemberData ParameterizeMember(object target, IMemberData member, object source, string name)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }
            if (member == null)
            {
                throw new ArgumentNullException(nameof(member));
            }
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            {
                var sourceType = TypeData.GetTypeData(source);
                if (!sourceType.GetMembers().Contains(member))
                {
                    throw new ArgumentException("The does not belong to the source object type");
                }
            }
            var targetType     = TypeData.GetTypeData(target);
            var existingMember = targetType.GetMember(name);



            if (existingMember == null)
            {
                var newMember = new ParameterMemberData(target, source, member, name);

                AddDynamicMember(target, newMember);
                return(newMember);
            }
            if (existingMember is ParameterMemberData fw)
            {
                fw.AddAdditionalMember(source, member);
                return(fw);
            }
            throw new Exception("A member by that name already exists.");
        }