Есть несколько способов.
Поскольку комментарии, кажется, указывают на то, что я предлагаю вам сделать это, позвольте мне прояснить: Вы должны создать именованный тип для вашего объекта, так как вы намереваетесьпередайте его.
Сначала вы можете использовать Reflection, на что уже указывал другой ответ.
Известен еще один способ, который обманывает .NET, давая вам правильный тип.как «приведение примера», и это выглядит примерно так: вам нужно передать свой объект через общий вызов метода, который вернет объект как правильный тип, выведя правильный тип для возврата.
Например, попробуйте это:
private static T CastByExample<T>(T example, object value)
{
return (T)value;
}
и использовать его:
var x = CastByExample(new { TheDay = ??, EntranceOrExit = ?? }, obj);
для двух ??пятна, вам просто нужно передать что-то, соответствующее типу данных для этих свойств, значения не будут использоваться.
Это использует тот факт, что несколько анонимных типов, содержащих одинаковые свойства одного типа, втот же порядок в той же сборке будет отображаться на один и тот же тип.
Однако к этому времени вы должны создать именованный тип.