На данный момент - короче, нет.Он должен иметь базовое понимание того, как вы собираетесь его работать.Я думаю, может быть, я мог бы добавить что-то, чтобы позволить указать стратегию по умолчанию для полностью неукрашенных типов (вещи, которые не DataContract
, ProtoContract
или XmlType
), но наиболее подходящая опция тамбыть "всеми публичными членами" (очень похоже на XmlSerializer
).
Причина, по которой я не хочу это поощрять, заключается в том, что она хрупкая.Из-за того, как спецификация protobuf определена, все, что вы получаете, это числа полей.Достаточно легко сказать «хорошо, упорядочить их по алфавиту и использовать их позиции», но это небезопасно, если вы когда-нибудь захотите изменить тип.И давайте посмотрим правде в глаза, мы все делаем.Вы будете удивлены тем, как часто я добавляю свойство AardvarkCount
, которое портится в алфавитном порядке.
Следовательно, я не хочу упростить людям возможность оказаться в ситуации, когда они рискуют сохранить целостность данных.Потому что мне не нравятся люди, кричащие на меня.Если бы существовала глобальная политика по умолчанию, было бы легко использовать эту политику , не осознавая ее , то есть, когда вы начинаете сталкиваться с проблемами.
Однако я намерен сделать ее прощевыбрать эти стратегии для каждого типа (код все существует, его просто нет в общедоступном API) - например:
model.Add(typeof(MyCrazyType), false).ApplyPolicy(ImplicitFields.AllPublic);
(материал ImplicitFields
уже существует, вернемся кv1 дней) или, может быть, просто:
model.Add(typeof(MyCrazyType), ImplicitFields.AllPublic);
любая помощь?имеет ли смысл рассуждение?