Это задокументировано здесь .Предоставленный фрагмент действителен, хотя не ясно, почему класс полностью пустой (может быть для иллюстративных целей).Я предполагаю, что главный вопрос когда использовать Expando Model ?
Представьте себе сайт, собирающий заказы на все возможные виды товаров.Один клиент может захотеть заказать котенка, другой - заказать книгу и т. Д. Книги и котенок имеют очень мало общего, может быть, только цена и вес.Но мы хотим, чтобы наши клиенты предоставили подробную информацию о своих пользователях, например, один клиент мог бы заказать котенка 3 месяца, сиамского, голубоглазого, а другой мог бы заказать «Властелин колец», 2-е издание, твердый переплет, подпись автора и т. Д. Хотя этиНа момент получения заказа свойства не имеют значения, они важны для вашей бизнес-логики.Также вы можете обработать эти свойства позже.
Единственным решением здесь является использование модели Expando, поскольку вы не можете создать универсальный класс (или иерархию классов), охватывающий все существующие свойства.Модель Expando будет содержать все общие свойства (цена, вес, идентификатор отслеживания, стоимость доставки, таможенные сборы и т. Д.) И методы (расчет итога, скидки и т. Д.), Остальные свойства будут создаваться клиентом динамически.во время выполнения.Экземпляр модели будет сохранен в хранилище данных со всеми его свойствами, и любой конкретный экземпляр вернет все свойства, определенные для него с помощью метода Model.properties ().