Ответ, похоже, не ожидается, и моя позиция в отношении лучшей тактики все равно изменилась, поэтому я отвечу на свой вопрос, описав, как я справился с основной проблемой непоследовательного поведения сериализации.
Фактическибизнес по созданию шаблонов обсадных труб - это постоянство и предсказуемость.Неважно, каково это поведение, если оно предсказуемо.
Форсирование повышает предсказуемость: одно или другое, и вы можете изменить все результаты из веб-API с помощью одной настройки.Так что принуждение лучше, и вопрос меняется на «Как я могу предотвратить принуждение?»на «Как я могу заставить динамику принудительно вызываться, как и все другие типы?»
Ответ на этот вопрос лежит здесь: .NET Core JSON сериализация свойств на динамическом (ExpandoObject)
Этот ответ для Core 1, вот как сделать то же самое с Core 2
// in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
. . .
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
. . .
}