Скажем, у меня есть такой метод печати:
private static void Print(IEnumerable items)
{
// Print logic here
}
Я хочу передать этому методу Print класс коллекции, который должен печатать все поля, как таблицу. Например, моей входной коллекцией могут быть «Люди», «Заказы», «Автомобили» и т. д.
Если я передам коллекцию «Автомобили» методу «Печать», он должен распечатать список деталей «Автомобиля», таких как: Марка, Цвет, Цена, Класс и т. Д.
Я не узнаю тип коллекции до времени выполнения. Я попытался и нашел решение, используя TypeDescriptors
и PropertyDescriptorCollection
. Но я не думаю, что это хорошее решение. Есть ли другой способ добиться этого с помощью выражений или дженериков?
IMyToString
(при условии, что ToString не переопределяется напрямую), а затем использоватьIEnumerable<IMyToString>
. Конечно, есть и другие методы, но обычно они полагаются на сопоставление (TypeConverters — это форма сопоставления) или используют RTTI другими способами. - person   schedule 25.02.2011