Не напрямую, и я не уверен, что в этом есть большая необходимость.Возможно, я что-то упускаю в примере ...
Чтобы понять ключевой момент - даже забыв о наследовании, вы нарушили контракт - в вашем примере поля 1 и 1 в одной модели и 1& 2 в другом.
Это действительно зависит от вашей цели;если вы просто хотите передать данные, убедитесь, что вы можете настроить RuntimeTypeModel, которая знает только о производном типе (отключите автоматическую настройку и добавьте поля вручную).Тогда это будет работать только для производного типа (очевидно), но будет выводить данные, как ожидается плоской моделью:
var model = TypeModel.Create();
model.Add(typeof(B), false)
.Add("prop1", "prop2");
Затем использовать model.Serialize и т. Д.
Однако записьметод плоского преобразования на c # или использование AutoMapper были бы более очевидными.Я бы использовал вышесказанное только в том случае, если моей целью является удаление наследования из выходных данных, например, из соображений совместимости.