/// <summary>
 /// Initilizes new instance of <see cref="T:NCoreUtils.Serialization.ObjectSerializer" /> with the specified
 /// parameters.
 /// </summary>
 /// <param name="factory">Type serializer factory.</param>
 /// <param name="targetType">Handled type.</param>
 /// <param name="accessors">All serializable accessors.</param>
 /// <param name="objectFactory">Object factory to use.</param>
 public ObjectSerializer(TypeSerializerFactory factory, Type targetType, ImmutableArray <IAccessor> accessors, IObjectFactory objectFactory)
     : base(factory, targetType)
 {
     //FIXME: Handle members hiding inherited members...
     Accessors     = ImmutableDictionary.CreateRange(accessors.Select(a => new KeyValuePair <string, IAccessor>(a.Name, a)));
     ObjectFactory = objectFactory;
 }
示例#2
0
 /// <summary>
 /// Serializes object to the specified writer.
 /// </summary>
 /// <param name="writer">Data writer.</param>
 /// <param name="obj">Source object.</param>
 protected virtual void Serialize(IDataWriter writer, object obj)
 {
     if (null == obj)
     {
         writer.WriteNull();
     }
     else
     {
         TypeSerializerFactory.GetSerializer(obj.GetType(), ServiceProvider).WriteObject(obj, writer, ServiceProvider);
     }
 }
示例#3
0
 /// <summary>
 /// Deserializes object from reader.
 /// </summary>
 /// <param name="reader">Data reader.</param>
 /// <param name="type">Target object type.</param>
 /// <returns>Deserialized object.</returns>
 protected virtual object Deserialize(IDataReader reader, Type type)
 {
     return(TypeSerializerFactory.GetSerializer(type, ServiceProvider).ReadObject(reader, ServiceProvider));
 }
        /// <summary>
        /// Instantiates default array serializer for the specified element type.
        /// </summary>
        /// <param name="factory">Type serializer factory.</param>
        /// <param name="elementType">Array element type.</param>
        /// <param name="serviceProvider">Service provider to use.</param>
        /// <returns>Initialized default array serializer.</returns>
        public static TypeSerializer Create(TypeSerializerFactory factory, Type elementType, IServiceProvider serviceProvider)
        {
            var serializerType = typeof(ArraySerializer <>).MakeGenericType(elementType);

            return((TypeSerializer)Activator.CreateInstance(serializerType, factory));
        }