Tengo una clase MyDummyClass
a la que me gustaría pasar algunas propiedades en forma de expresión Lambda para una evaluación posterior. Entonces, ¿qué puedo hacer algo comoLa mejor manera de pasar una lista de nombres de propiedades como Lambda Expressions
public class MyDummyClass<T>
{
public MyDummyClass(Expression<Func<T, object>> property)
{
...
}
...
}
..y luego usar esa clase como new MyDummyClass<Person>(x=>x.Name)
, ¿verdad?
Pero me gustaría pasar no solo una propiedad sino una lista de propiedades. Así que me gustaría escribir mi clase como
public class MyDummyClass<T>
{
public MyDummyClass(IEnumerable<Expression<Func<T, object>>> properties)
{
...
}
...
}
y me como usarlo como new MyDummyClass<Person>(new[] { x=>x.Name, x=>x.Surname })
pero por desgracia no funciona ! En su lugar tengo que escribir
new MyDummyClass<Person>
(new Expression<Func<Person, object>>[] { x=>x.Name, x=>x.Surname});
Pero esto es un poco incómodo de escribir, ¿no? Por supuesto, usar params funcionaría, pero esto es solo una muestra de un fragmento de código más complicado donde usando params no es una opción. ¿Alguien tiene una mejor opción para salir de esto?
¿Por qué no quieres usar 'params'? Es el enfoque más simple, y funcionará sin especificar el tipo de delegado. –
Yo también voto por params. Mantendrá la sintaxis muy clara y detrás de las escenas utiliza una matriz que es lo que quería hacer en primer lugar! – Umair
Claro, en este simple ejemplo sería, pero lo saqué de uno más complejo donde no puedo usar params ya que hay otros parámetros opcionales entre los cuales no funcionaría ... lamentablemente – Juri