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."); }