Я бы использовал AllPropertiesExcept(params Expression<Func<object>>[] properties)
, вы все равно можете извлечь из него имена свойств, но не имеет значения, какого типа это свойство.
Редактировать: Однако я бы предпочел использовать его наоборот - вместо исключения свойств, которые я не хочу видеть, я бы включил свойства, которые я хочу видеть. Причина проста - чтобы заставить вас работать, вам все еще нужно размышлять - с моей точки зрения, вы можете легко использовать Func
, который вы получаете, чтобы получить фактические данные напрямую.
Редактировать 2 (получение имени свойства из выражения):
Expression<Func<object>> obj = something; // you get this in your method
((obj.Body as UnaryExpression).Operand as MemberExpression).Member.Name
Я действительно могу посоветовать вам использовать LinqPad для таких вещей, вы можете легко развернуть объекты с помощью Dump()
, который отображает объекты очень удобно для пользователя. Просто воссоздайте небольшой пример и поэкспериментируйте.