protected UnityEnumerableMessagePackSerializer(
     SerializationContext ownerContext,
     Type targetType,
     CollectionTraits traits,
     PolymorphismSchema schema,
     SerializerCapabilities capabilities
     )
     : base(ownerContext, targetType, traits.ElementType, schema, capabilities)
 {
     this._getCount = traits.CountPropertyGetter;
 }
        /// <summary>
        ///		Initializes a new instance of the <see cref="MessagePackSerializer"/> class.
        /// </summary>
        /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
        /// <param name="packerCompatibilityOptions">The <see cref="PackerCompatibilityOptions"/> for new packer creation.</param>
        /// <param name="capabilities">The capability flags for this instance.</param>
        internal MessagePackSerializer(SerializationContext ownerContext, PackerCompatibilityOptions?packerCompatibilityOptions, SerializerCapabilities capabilities)
        {
            if (ownerContext == null)
            {
                ThrowArgumentNullException("ownerContext");
            }

            this._ownerContext = ownerContext;
            this._packerCompatibilityOptionsForCompatibility = packerCompatibilityOptions;
            this._capabilities = capabilities;
        }
        protected UnityDictionaryMessagePackSerializer(
            SerializationContext ownerContext,
            Type targetType,
            Type keyType,
            Type valueType,
            CollectionTraits traits,
            PolymorphismSchema schema,
            SerializerCapabilities capabilities
            )
            : base(ownerContext, targetType, capabilities)
        {
            var safeSchema = schema ?? PolymorphismSchema.Default;

            this._keySerializer   = ownerContext.GetSerializer(keyType, safeSchema.KeySchema);
            this._valueSerializer = ownerContext.GetSerializer(valueType, safeSchema.ItemSchema);
            this._add             = traits.AddMethod;
            this._getCount        = traits.CountPropertyGetter;
            this._getKey          = traits.ElementType.GetProperty("Key").GetGetMethod();
            this._getValue        = traits.ElementType.GetProperty("Value").GetGetMethod();
        }
        protected NonGenericDictionaryMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
            : base(ownerContext, capabilities)
        {
            var safeSchema = schema ?? PolymorphismSchema.Default;

            this._keySerializer   = ownerContext.GetSerializer(typeof(object), safeSchema.KeySchema);
            this._valueSerializer = ownerContext.GetSerializer(typeof(object), safeSchema.ItemSchema);
        }
        public ReflectionObjectMessagePackSerializer(SerializationContext context, SerializationTarget target, SerializerCapabilities capabilities)
            : base(context, capabilities)
        {
            ReflectionSerializerHelper.GetMetadata(typeof(T), target.Members, context, out this._getters, out this._setters, out this._memberInfos, out this._contracts, out this._serializers);
            this._memberIndexes =
                this._contracts
                .Select((contract, index) => new KeyValuePair <string, int>(contract.Name, index))
                .Where(kv => kv.Key != null)
                // Set key as transformed.
                .ToDictionary(kv => context.DictionarySerlaizationOptions.SafeKeyTransformer(kv.Key), kv => kv.Value);
            this._constructorParameters =
                (!typeof(IUnpackable).IsAssignableFrom(typeof(T)) && target.IsConstructorDeserialization)
                                        ? target.DeserializationConstructor.GetParameters()
                                        : null;
            if (this._constructorParameters != null)
            {
                this._constructorArgumentIndexes = new Dictionary <int, int>(this._memberIndexes.Count);
                foreach (var member in target.Members)
                {
                    int index =
#if SILVERLIGHT && !WINDOWS_PHONE
                        this._constructorParameters.FindIndex(
#else
                        Array.FindIndex(this._constructorParameters,
#endif // SILVERLIGHT && !WINDOWS_PHONE
                            item => item.Name.Equals(member.Contract.Name, StringComparison.OrdinalIgnoreCase) && item.ParameterType == member.Member.GetMemberValueType()
                            );
                    if (index >= 0)
                    {
                        this._constructorArgumentIndexes.Add(index, this._memberIndexes[member.Contract.Name]);
                    }
                }
            }
        }
 /// <summary>
 ///		Initializes a new instance of the <see cref="CollectionMessagePackSerializerBase{TCollection, TItem}"/> class.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="schema">
 ///		The schema for collection itself or its items for the member this instance will be used to.
 ///		<c>null</c> will be considered as <see cref="PolymorphismSchema.Default"/>.
 /// </param>
 /// <param name="capabilities">A serializer calability flags represents capabilities of this instance.</param>
 /// <exception cref="ArgumentNullException">
 ///		<paramref name="ownerContext"/> is <c>null</c>.
 /// </exception>
 protected CollectionMessagePackSerializerBase(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, schema, capabilities)
 {
 }
 /// <summary>
 ///		Initializes a new instance of the <see cref="EnumerableMessagePackSerializer{TCollection, TItem}"/> class.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="schema">
 ///		The schema for collection itself or its items for the member this instance will be used to.
 ///		<c>null</c> will be considered as <see cref="PolymorphismSchema.Default"/>.
 /// </param>
 /// <param name="capabilities">A serializer calability flags represents capabilities of this instance.</param>
 /// <exception cref="ArgumentNullException">
 ///		<paramref name="ownerContext"/> is <c>null</c>.
 /// </exception>
 protected EnumerableMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, schema, capabilities)
 {
 }
 private NonGenericMessagePackSerializer(SerializationContext ownerContext, Type targetType, PackerCompatibilityOptions?packerCompatibilityOptions, SerializerCapabilities capabilities)
     : base(ownerContext, packerCompatibilityOptions, capabilities)
 {
     this._targetType = targetType;
     this._isNullable = JudgeNullable(targetType);
 }
Esempio n. 9
0
 protected UnityNonGenericCollectionMessagePackSerializer(SerializationContext ownerContext, Type targetType, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, targetType, schema, capabilities)
 {
 }
		protected DictionaryMessagePackSerializerBase( SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities )
			: base( ownerContext, capabilities )
		{
			var safeSchema = schema ?? PolymorphismSchema.Default;
			this._keySerializer = ownerContext.GetSerializer<TKey>( safeSchema.KeySchema );
			this._valueSerializer = ownerContext.GetSerializer<TValue>( safeSchema.ItemSchema );
		}
Esempio n. 11
0
 /// <summary>
 ///		Initializes a new instance of the <see cref="ReadOnlyDictionaryMessagePackSerializer{TDictionary, TKey, TValue}"/> class.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="schema">
 ///		The schema for collection itself or its items for the member this instance will be used to.
 ///		<c>null</c> will be considered as <see cref="PolymorphismSchema.Default"/>.
 /// </param>
 /// <param name="capabilities">A serializer calability flags represents capabilities of this instance.</param>
 /// <exception cref="ArgumentNullException">
 ///		<paramref name="ownerContext"/> is <c>null</c>.
 /// </exception>
 protected ReadOnlyDictionaryMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, schema, capabilities)
 {
 }
		private NonGenericMessagePackSerializer( SerializationContext ownerContext, Type targetType, PackerCompatibilityOptions? packerCompatibilityOptions, SerializerCapabilities capabilities )
			: base( ownerContext, packerCompatibilityOptions, capabilities )
		{
			this._targetType = targetType;
			this._isNullable = JudgeNullable( targetType );
		}
		/// <summary>
		///		Initializes a new instance of the <see cref="NonGenericMessagePackSerializer"/> class with explicitly specified compatibility option.
		/// </summary>
		/// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
		/// <param name="targetType">The type to be serialized.</param>
		/// <param name="packerCompatibilityOptions">The <see cref="PackerCompatibilityOptions"/> for new packer creation.</param>
		/// <param name="capabilities">The capability flags for this instance.</param>
		/// <exception cref="ArgumentNullException"><paramref name="ownerContext"/> is <c>null</c>.</exception>
		/// <remarks>
		///		This method also supports backword compatibility with 0.4.
		/// </remarks>
		protected NonGenericMessagePackSerializer( SerializationContext ownerContext, Type targetType, PackerCompatibilityOptions packerCompatibilityOptions, SerializerCapabilities capabilities )
			: this( ownerContext, targetType, new PackerCompatibilityOptions?( packerCompatibilityOptions ), capabilities ) { }
		/// <summary>
		///		Initializes a new instance of the <see cref="NonGenericMessagePackSerializer"/> class with explicitly specified compatibility option.
		/// </summary>
		/// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
		/// <param name="targetType">The type to be serialized.</param>
		/// <param name="capabilities">The capability flags for this instance.</param>
		/// <exception cref="ArgumentNullException"><paramref name="ownerContext"/> is <c>null</c>.</exception>
		protected NonGenericMessagePackSerializer( SerializationContext ownerContext, Type targetType, SerializerCapabilities capabilities )
			: this( ownerContext, targetType, null, capabilities ) { }
 protected UnityEnumerableMessagePackSerializerBase(SerializationContext ownerContext, Type targetType, Type itemType, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, targetType, capabilities)
 {
     this._itemSerializer = ownerContext.GetSerializer(itemType, (schema ?? PolymorphismSchema.Default).ItemSchema);
 }
 /// <summary>
 ///		Initializes a new instance of the <see cref="NonGenericMessagePackSerializer"/> class with explicitly specified compatibility option.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="targetType">The type to be serialized.</param>
 /// <param name="capabilities">The capability flags for this instance.</param>
 /// <exception cref="ArgumentNullException"><paramref name="ownerContext"/> is <c>null</c>.</exception>
 protected NonGenericMessagePackSerializer(SerializationContext ownerContext, Type targetType, SerializerCapabilities capabilities)
     : this(ownerContext, targetType, null, capabilities)
 {
 }
 /// <summary>
 ///		Initializes a new instance of the <see cref="NonGenericMessagePackSerializer"/> class with explicitly specified compatibility option.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="targetType">The type to be serialized.</param>
 /// <param name="packerCompatibilityOptions">The <see cref="PackerCompatibilityOptions"/> for new packer creation.</param>
 /// <param name="capabilities">The capability flags for this instance.</param>
 /// <exception cref="ArgumentNullException"><paramref name="ownerContext"/> is <c>null</c>.</exception>
 /// <remarks>
 ///		This method also supports backword compatibility with 0.4.
 /// </remarks>
 protected NonGenericMessagePackSerializer(SerializationContext ownerContext, Type targetType, PackerCompatibilityOptions packerCompatibilityOptions, SerializerCapabilities capabilities)
     : this(ownerContext, targetType, new PackerCompatibilityOptions?(packerCompatibilityOptions), capabilities)
 {
 }
Esempio n. 18
0
		/// <summary>
		///		Initializes a new instance of the <see cref="MessagePackSerializer"/> class.
		/// </summary>
		/// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
		/// <param name="packerCompatibilityOptions">The <see cref="PackerCompatibilityOptions"/> for new packer creation.</param>
		/// <param name="capabilities">The capability flags for this instance.</param>
		internal MessagePackSerializer( SerializationContext ownerContext, PackerCompatibilityOptions? packerCompatibilityOptions, SerializerCapabilities capabilities )
		{
			if ( ownerContext == null )
			{
				ThrowArgumentNullException( "ownerContext" );
			}

			this._ownerContext = ownerContext;
			this._packerCompatibilityOptionsForCompatibility = packerCompatibilityOptions;
			this._capabilities = capabilities;
		}
Esempio n. 19
0
 /// <summary>
 ///		Initializes a new instance of the <see cref="NonGenericListMessagePackSerializer{TList}"/> class.
 /// </summary>
 /// <param name="ownerContext">A <see cref="SerializationContext"/> which owns this serializer.</param>
 /// <param name="schema">
 ///		The schema for collection itself or its items for the member this instance will be used to.
 ///		<c>null</c> will be considered as <see cref="PolymorphismSchema.Default"/>.
 /// </param>
 /// <param name="capabilities">A serializer calability flags represents capabilities of this instance.</param>
 /// <exception cref="ArgumentNullException">
 ///		<paramref name="ownerContext"/> is <c>null</c>.
 /// </exception>
 protected NonGenericListMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, schema, capabilities)
 {
 }
Esempio n. 20
0
 protected NonGenericEnumerableMessagePackSerializerBase(SerializationContext ownerContext, PolymorphismSchema schema, SerializerCapabilities capabilities)
     : base(ownerContext, capabilities)
 {
     this._itemSerializer = ownerContext.GetSerializer(typeof(object), (schema ?? PolymorphismSchema.Default).ItemSchema);
 }