public void SetLegacyFormat(ref MemberLevelSettingsValue level, MemberInfo member, RuntimeTypeModel model) { Type type = Helpers.GetMemberType(member); ValueFormat legacyFormat = ValueSerializerBuilder.GetDefaultLegacyFormat(type, model); switch (Helpers.GetTypeCode(type)) { // these can't be registered and don't have AsReferenceDefault // explicitely set their asReference = false case ProtoTypeCode.String: case ProtoTypeCode.ByteArray: case ProtoTypeCode.Type: case ProtoTypeCode.Uri: level.Format = legacyFormat; break; default: if (!RuntimeTypeModel.CheckTypeCanBeAdded(model, type)) { // for primitive types - explicitly level.Format = legacyFormat; } break; } }
public virtual bool CanAutoAddType(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (!RuntimeTypeModel.CheckTypeCanBeAdded(Model, type)) { return(false); } return(GetContractFamily(type) != AttributeFamily.None || RuntimeTypeModel.CheckTypeDoesntRequireContract(Model, type)); }