/// <summary> /// Returns the value of the <see langword="object"/>. /// </summary> /// <typeparam name="T">Return <see cref="Type"/>.</typeparam> /// <param name="otherObject"><see langword="object"/> to visit.</param> /// <returns>Returns the value of the <see langword="object"/>.</returns> protected T VisitObject <T>(object otherObject) where T : class { if (otherObject == null) { return(null); } object foundObject = null; SerializableElementInit serializableElementInit = otherObject as SerializableElementInit; if (serializableElementInit != null) { foundObject = VisitSerializableElementInit(serializableElementInit); } else { SerializableMemberAssignment serializableMemberAssignment = otherObject as SerializableMemberAssignment; if (serializableMemberAssignment != null) { foundObject = VisitSerializableMemberAssignment(serializableMemberAssignment); } else { SerializableMemberListBinding serializableMemberListBinding = otherObject as SerializableMemberListBinding; if (serializableMemberListBinding != null) { foundObject = VisitSerializableMemberListBinding(serializableMemberListBinding); } else { SerializableMemberMemberBinding serializableMemberMemberBinding = otherObject as SerializableMemberMemberBinding; if (serializableMemberMemberBinding != null) { foundObject = VisitSerializableMemberMemberBinding(serializableMemberMemberBinding); } } } } if (!(foundObject is T)) { throw new NotImplementedException(); } return(foundObject as T); }
/// <summary> /// Visits a <see cref="SerializableMemberAssignment"/>. /// </summary> /// <param name="memberAssignment"><see cref="SerializableMemberAssignment"/> to visit.</param> /// <returns>Returns the converted <see langword="object"/>.</returns> protected abstract object VisitSerializableMemberAssignment(SerializableMemberAssignment memberAssignment);
/// <summary> /// Visits a <see cref="SerializableMemberAssignment"/>. /// </summary> /// <param name="memberAssignment"><see cref="SerializableMemberAssignment"/> to visit.</param> /// <returns>Returns the converted <see langword="object"/>.</returns> protected override object VisitSerializableMemberAssignment(SerializableMemberAssignment memberAssignment) { return(Expression.Bind(memberAssignment.Member, Visit(memberAssignment.Expression))); }