/// <summary> /// Removes Member from this ObjectType /// </summary> /// <param name="a_Name"> /// Member name <see cref="System.String"/> /// </param> public void RemoveMember(string a_Name) { VirtualMember member = this[a_Name]; if (member != null) { RemoveMember(member.Index); } else { throw new ExceptionCreatingVirtualPropertyTwiceWithDifferentType(a_Name); } member = null; }
/// <summary> /// Removes Member from this ObjectType /// </summary> /// <param name="a_Member"> /// Virtual member <see cref="VirtualMember"/> /// </param> public void RemoveMember(VirtualMember a_Member) { if (a_Member == null) { return; } if (a_Member.Name == properties[a_Member.Index].Name) { RemoveMember(a_Member.Index); } else { throw new ExceptionRemovingMemberWithDifferentName(); } }
/// <summary> /// Adds new memeber for this ObjectType /// </summary> /// <param name="a_Name"> /// Member name <see cref="System.String"/> /// </param> /// <param name="a_Type"> /// Member type <see cref="System.Type"/> /// </param> public void AddMember(string a_Name, System.Type a_Type) { if (IsLocked == true) { throw new ExceptionCantAddMemberToLockedVirtualObject(); } VirtualMember member = this[a_Name]; if (member != null) { if (a_Type == member.PropertyType) { return; } else { throw new ExceptionCreatingVirtualPropertyTwiceWithDifferentType(a_Name); } } member = null; VirtualMember[] newprops; if (properties != null) { newprops = new VirtualMember [properties.Length + 1]; properties.CopyTo(newprops, 0); newprops[newprops.Length - 1] = new VirtualMember(a_Name, a_Type, newprops.Length - 1); } else { newprops = new VirtualMember [1]; newprops[0] = new VirtualMember(a_Name, a_Type, 0); } properties = null; properties = newprops; newprops = null; }