Ho una classe MyDummyClass
a cui vorrei passare alcune proprietà sotto forma di espressione Lambda per una valutazione successiva. Quindi quello che posso fare qualcosa di simileIl modo migliore per passare un elenco di nomi di proprietà come Lambda Expressions
public class MyDummyClass<T>
{
public MyDummyClass(Expression<Func<T, object>> property)
{
...
}
...
}
..e poi usare quella classe come new MyDummyClass<Person>(x=>x.Name)
, giusto?
Ma poi mi piacerebbe passare non solo una singola proprietà ma un elenco di proprietà. Quindi mi piacerebbe scrivere la mia classe come
public class MyDummyClass<T>
{
public MyDummyClass(IEnumerable<Expression<Func<T, object>>> properties)
{
...
}
...
}
e mi piacerebbe come per usarlo come new MyDummyClass<Person>(new[] { x=>x.Name, x=>x.Surname })
ma purtroppo questo non funziona! Invece devo scrivere
new MyDummyClass<Person>
(new Expression<Func<Person, object>>[] { x=>x.Name, x=>x.Surname});
ma questo è un po 'scomodo per scrivere, non è vero? Certamente, usare i parametri funzionerebbe, ma questo è solo un esempio di un pezzo di codice più complicato in cui utilizzando parametri non è un'opzione. qualcuno ha un'opzione migliore di uscire da questo ??
Perché non vuoi usare 'params'? È l'approccio più semplice e funzionerà senza specificare il tipo di delegato. –
Anche io voto per i param. Manterrà la sintassi molto accurata e dietro le quinte usa un array che è ciò che volevi fare in primo luogo! – Umair
Certo, in questo semplice esempio lo farebbe, ma l'ho preso da uno più complesso in cui non posso usare params poiché ci sono altri parametri opzionali tra cui non funzionerebbe quindi ... purtroppo – Juri