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));
 }