Siéntete libre de divulgar nuestra página y códigos con tus amigos, ayúdanos a hacer crecer esta comunidad.
Solución:
Puedes hacerlo usando Reflection
bool IsAnyNullOrEmpty(object myObject)
foreach(PropertyInfo pi in myObject.GetType().GetProperties())
if(pi.PropertyType == typeof(string))
string value = (string)pi.GetValue(myObject);
if(string.IsNullOrEmpty(value))
return true;
return false;
Matthew Watson sugirió una alternativa usando LINQ:
return myObject.GetType().GetProperties()
.Where(pi => pi.PropertyType == typeof(string))
.Select(pi => (string)pi.GetValue(myObject))
.Any(value => string.IsNullOrEmpty(value));
Supongo que desea asegurarse de que todas las propiedades estén completas.
Una mejor opción es probablemente poner esta validación en el constructor de su clase y lanzar excepciones si falla la validación. De esa manera, no puede crear una clase que no sea válida; capturar excepciones y manejarlas en consecuencia.
La validación fluida es un buen marco (http://fluentvalidation.codeplex.com) para realizar la validación. Ejemplo:
public class CustomerValidator: AbstractValidator
public CustomerValidator()
RuleFor(customer => customer.Property1).NotNull();
RuleFor(customer => customer.Property2).NotNull();
RuleFor(customer => customer.Property3).NotNull();
public class Customer
public Customer(string property1, string property2, string property3)
Property1 = property1;
Property2 = property2;
Property3 = property3;
new CustomerValidator().ValidateAndThrow();
public string Property1 get; set;
public string Property2 get; set;
public string Property3 get; set;
Uso:
try
var customer = new Customer("string1", "string", null);
// logic here
catch (ValidationException ex)
// A validation error occured
PD: el uso de la reflexión para este tipo de cosas solo hace que su código sea más difícil de leer. El uso de la validación como se muestra arriba deja explícitamente claro cuáles son sus reglas; y puede extenderlos fácilmente con otras reglas.
Aquí tienes
var instOfA = new ObjectA();
bool isAnyPropEmpty = instOfA.GetType().GetProperties()
.Where(p => p.GetValue(instOfA) is string) // selecting only string props
.Any(p => string.IsNullOrWhiteSpace((p.GetValue(instOfA) as string)));
y aquí está la clase
class ObjectA
public string A get; set;
public string B get; set;
Aquí tienes las reseñas y puntuaciones
Te invitamos a añadir valor a nuestro contenido informacional añadiendo tu veteranía en las explicaciones.