Лучший способ передать список имен свойств в виде лямбда-выражений

У меня есть класс MyDummyClass , которому я хотел бы передать некоторые свойства в форме лямбда-выражения для последующей оценки. Итак, что я могу сделать что-то вроде

public class MyDummyClass<T>
{
    public MyDummyClass(Expression<Func<T, object>> property)
    {
        ...
    }
    ...
}

.. а затем использовать этот класс, например new MyDummyClass (x => x.Name) , верно?

Но тогда я бы хотел передать не только одно свойство, но и список свойств. Поэтому я бы написал свой класс как

public class MyDummyClass<T>
{
    public MyDummyClass(IEnumerable<Expression<Func<T, object>>> properties)
    {
        ...
    }
    ...
}

и хотел бы использовать его как new MyDummyClass (new [] {x => x.Name, x => x .Surname}) , но, к сожалению, не работает ! Вместо этого я должен написать

new MyDummyClass<Person>
     (new Expression<Func<Person, object>>[] { x=>x.Name, x=>x.Surname});

. Но это немного неудобно писать, не правда ли? Конечно, использование params будет работать, но это всего лишь образец из более сложного фрагмента кода, где использование params не является вариантом . Есть ли у лучший вариант , чтобы выйти из этого ??

9
задан Juri 18 February 2012 в 10:53
поделиться