Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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);
Ejemplo n.º 3
0
 /// <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)));
 }