¿Cómo itero sobre las propiedades de un objeto anónimo en C #?

Quiero tomar un objeto anónimo como argumento para un método, y luego iterar sobre sus propiedades para agregar cada propiedad / valor a una dinámicaExpandoObject.

Entonces, lo que necesito es ir de

new { Prop1 = "first value", Prop2 = SomeObjectInstance, Prop3 = 1234 }

para conocer los nombres y valores de cada propiedad y poder agregarlos aExpandoObject.

¿Cómo logro esto?

Nota al margen: Esto se hará en muchas de mis pruebas unitarias (lo estoy usando para refactorizar una gran cantidad de basura en la configuración), por lo que el rendimiento es relevante en cierta medida. No sé lo suficiente sobre la reflexión para decirlo con certeza, pero por lo que he entendido es bastante pesado, así que si es posible, prefiero evitarlo ...

Siguiente pregunta: Como dije, estoy tomando este objeto anónimo como argumento para un método. ¿Qué tipo de datos debo usar en la firma del método? ¿Todas las propiedades estarán disponibles si usoobject?

Respuestas a la pregunta(6)

Su respuesta a la pregunta