es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando reflexión para recortar todas las cadenas de un objeto.

Esta implementación solamente maneja las cadenas de texto en el nivel superior de la solicitud (Request) – necesito manejar las cadenas de texto de nivel anidado de Friend también.

private static T TrimWhiteSpaceOnRequest<t>(T obj)
    {
        if (obj != null) 
        {
            PropertyInfo[] properties = obj!.GetType().GetProperties();
            foreach (PropertyInfo property in properties) {
                try
                {
                    if (property.PropertyType == typeof(string)) 
                    {
                        var o = property.GetValue(obj, null) ?? "";
                        string s = (string)o;
                        property.SetValue(obj, s.Trim());
                    }
                    else
                    {
                        // manejar el objeto Friend anidado aquí

                }
            }
            catch (Exception)
            {
                log.info("Error al convertir el campo " + field.getName());
            }
        }

    }
    return obj;
}


¿Qué puedo poner en el else para acceder a la capa anidada?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el método GetType() para comprobar el tipo de la propiedad y si se trata de un objeto Friend, puede utilizar el método TrimWhiteSpaceOnRequest() para eliminar los espacios en blanco de las cadenas dentro del modelo anidado.

    else
    {
        if (property.PropertyType == typeof(Friend)) 
        {
            var o = property.GetValue(obj, null);
            Friend friend = (Friend)o;
            property.SetValue(obj, TrimWhiteSpaceOnRequest(friend));
        }
    }
    

Comments are closed.