/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="memberValues">The member values.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> private ISerializationContext <BinarySerializationContextInfo> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode, List <MemberValue> memberValues, ISerializationConfiguration configuration) { var serializationInfo = new SerializationInfo(model.GetType(), new FormatterConverter()); var binaryFormatter = CreateBinaryFormatter(contextMode); if (memberValues == null) { memberValues = new List <MemberValue>(); } var contextInfo = new BinarySerializationContextInfo(serializationInfo, memberValues, binaryFormatter); return(new SerializationContext <BinarySerializationContextInfo>(model, modelType, contextInfo, contextMode, configuration)); }
/// <summary> /// Configures the binary formatter. /// </summary> /// <param name="contextMode">The context mode.</param> /// <returns>The binary formatter.</returns> private BinaryFormatter CreateBinaryFormatter(SerializationContextMode contextMode) { var binaryFormatter = new BinaryFormatter(); binaryFormatter.AssemblyFormat = FormatterAssemblyStyle.Simple; binaryFormatter.FilterLevel = TypeFilterLevel.Full; binaryFormatter.TypeFormat = FormatterTypeStyle.TypesWhenNeeded; if (contextMode == SerializationContextMode.Deserialization) { binaryFormatter.Binder = DeserializationBinder; } return(binaryFormatter); }
/// <summary> /// Initializes a new instance of the <see cref="SerializationContext{TContext}" /> class. /// </summary> /// <param name="model">The model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="context" /> is <c>null</c>.</exception> public SerializationContext(ModelBase model, TContext context, SerializationContextMode contextMode) { Argument.IsNotNull("model", model); Argument.IsNotNull("context", context); Model = model; ModelType = model.GetType(); Context = context; ContextMode = contextMode; var scopeName = SerializationContextHelper.GetSerializationReferenceManagerScopeName(); _referenceManagerScopeManager = ScopeManager <ReferenceManager> .GetScopeManager(scopeName); ReferenceManager = _referenceManagerScopeManager.ScopeObject; }
/// <summary> /// Gets the serializer specific serialization context info. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configuration" /> is <c>null</c>.</exception> protected override ISerializationContext<XmlSerializationContextInfo> GetSerializationContextInfo(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration) { XDocument document = null; try { if (stream.Length != 0) { document = XDocument.Load(stream); } } catch (Exception ex) { Log.Warning(ex, "Failed to load document from stream, falling back to empty document"); } var isNewDocument = document == null; if (isNewDocument) { var rootName = "root"; if (model != null) { rootName = _rootNameCache.GetFromCacheOrFetch(modelType, () => { return GetXmlElementName(modelType, model, null); }); } document = new XDocument(new XElement(rootName)); } var contextInfo = new XmlSerializationContextInfo(document.Root, model); var context = new SerializationContext<XmlSerializationContextInfo>(model, modelType, contextInfo, contextMode, configuration); if (isNewDocument) { AddReferenceId(context, document.Root, model); } return context; }
/// <summary> /// Initializes a new instance of the <see cref="SerializationContext{TContext}" /> class. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> public SerializationContext(object model, Type modelType, TSerializationContextInfo context, SerializationContextMode contextMode, ISerializationConfiguration configuration = null) { Argument.IsNotNull("modelType", modelType); Argument.IsNotNull("context", context); Argument.IsNotNull("configuration", configuration); Model = model; ModelType = modelType; ModelTypeName = modelType.GetSafeFullName(false); Context = context; ContextMode = contextMode; TypeStack = new Stack <Type>(); Configuration = configuration; var scopeName = SerializationContextHelper.GetSerializationScopeName(); _scopeManager = ScopeManager <SerializationContextScope <TSerializationContextInfo> > .GetScopeManager(scopeName, () => new SerializationContextScope <TSerializationContextInfo>()); var contextScope = _scopeManager.ScopeObject; TypeStack = contextScope.TypeStack; ReferenceManager = contextScope.ReferenceManager; Contexts = contextScope.Contexts; var contexts = contextScope.Contexts; if (contexts.Count > 0) { Parent = contexts.Peek(); } var serializationContextInfoParentSetter = context as ISerializationContextContainer; if (serializationContextInfoParentSetter != null) { serializationContextInfoParentSetter.SetSerializationContext(this); } Initialize(); }
/// <summary> /// Initializes a new instance of the <see cref="SerializationContext{TContext}" /> class. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="context" /> is <c>null</c>.</exception> public SerializationContext(object model, Type modelType, TContext context, SerializationContextMode contextMode) { Argument.IsNotNull("modelType", modelType); Argument.IsNotNull("context", context); Model = model; ModelType = modelType; Context = context; ContextMode = contextMode; TypeStack = new Stack <Type>(); var scopeName = SerializationContextHelper.GetSerializationReferenceManagerScopeName(); _typeStackScopeManager = ScopeManager <Stack <Type> > .GetScopeManager(scopeName, () => new Stack <Type>()); TypeStack = _typeStackScopeManager.ScopeObject; _referenceManagerScopeManager = ScopeManager <ReferenceManager> .GetScopeManager(scopeName); ReferenceManager = _referenceManagerScopeManager.ScopeObject; _serializableToken = CreateSerializableToken(); }
public SerializationContext(object model, Type modelType, TContext context, SerializationContextMode contextMode) : this(model, modelType, context, contextMode, null) { }
#pragma warning disable 672 protected override ISerializationContext <JsonSerializationContextInfo> GetContext(object model, Type modelType, Stream stream, #pragma warning restore 672 SerializationContextMode contextMode, ISerializationConfiguration configuration) { return(GetSerializationContextInfo(model, modelType, stream, contextMode, configuration)); }
/// <summary> /// Gets the context for the specified model type. /// <para /> /// Use this method when no model instance is available. This method will create one. /// </summary> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="stream" /> is <c>null</c>.</exception> protected ISerializationContext <TSerializationContext> GetContext(Type modelType, Stream stream, SerializationContextMode contextMode) { Argument.IsNotNull("type", modelType); Argument.IsNotNull("stream", stream); var model = CreateModelInstance(modelType); return(GetContext(model, modelType, stream, contextMode)); }
/// <summary> /// Gets the context for the specified model type. /// <para /> /// Use this method when no model instance is available. This method will create one. /// </summary> /// <param name="modelType">Type of the model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="context" /> is <c>null</c>.</exception> protected ISerializationContext <TSerializationContext> GetContext(Type modelType, TSerializationContext context, SerializationContextMode contextMode) { Argument.IsNotNull("type", modelType); Argument.IsNotNull("context", context); var model = CreateModelInstance(modelType); return(GetContext(model, modelType, context, contextMode)); }
protected ISerializationContext <TSerializationContext> GetContext(Type modelType, Stream stream, SerializationContextMode contextMode) { return(GetContext(modelType, stream, contextMode, null)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// ISerializationContext{SerializationInfo}. /// </returns> /// <exception cref="System.ArgumentOutOfRangeException">contextMode</exception> protected override ISerializationContext <JsonSerializationContextInfo> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration) { JsonReader jsonReader = null; JsonWriter jsonWriter = null; var useBson = false; var dateTimeKind = DateTimeKind.Unspecified; var dateParseHandling = DateParseHandling.None; var dateTimeZoneHandling = DateTimeZoneHandling.Unspecified; var jsonConfiguration = configuration as JsonSerializationConfiguration; if (jsonConfiguration != null) { useBson = jsonConfiguration.UseBson; dateTimeKind = jsonConfiguration.DateTimeKind; dateParseHandling = jsonConfiguration.DateParseHandling; dateTimeZoneHandling = jsonConfiguration.DateTimeZoneHandling; } switch (contextMode) { case SerializationContextMode.Serialization: if (useBson) { jsonWriter = new BsonWriter(stream); } else { var streamWriter = new StreamWriter(stream, Encoding.UTF8); jsonWriter = new JsonTextWriter(streamWriter); } break; case SerializationContextMode.Deserialization: if (useBson) { var shouldSerializeAsCollection = false; var shouldSerializeAsDictionary = ShouldSerializeAsDictionary(modelType); if (!shouldSerializeAsDictionary) { // Only check if we should deserialize as collection if we are not a dictionary shouldSerializeAsCollection = ShouldSerializeAsCollection(modelType); } jsonReader = new BsonReader(stream, shouldSerializeAsCollection, dateTimeKind); } else { var streamReader = new StreamReader(stream, Encoding.UTF8); jsonReader = new JsonTextReader(streamReader); } break; default: throw new ArgumentOutOfRangeException("contextMode"); } if (jsonReader != null) { jsonReader.Culture = configuration.Culture; jsonReader.DateParseHandling = dateParseHandling; jsonReader.DateTimeZoneHandling = dateTimeZoneHandling; } if (jsonWriter != null) { jsonWriter.Culture = configuration.Culture; jsonWriter.DateTimeZoneHandling = dateTimeZoneHandling; } return(GetContext(model, modelType, jsonReader, jsonWriter, contextMode, null, null, configuration)); }
protected virtual ISerializationContext <TSerializationContext> GetContext(object model, Type modelType, TSerializationContext context, SerializationContextMode contextMode) { return(GetContext(model, modelType, context, contextMode, null)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>ISerializationContext{SerializationInfo}.</returns> protected override ISerializationContext <BinarySerializationContextInfo> GetContext(ModelBase model, Stream stream, SerializationContextMode contextMode) { return(GetContext(model, stream, contextMode, null)); }
/// <summary> /// Gets the context for the specified model instance. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configuration" /> is <c>null</c>.</exception> protected virtual ISerializationContext <TSerializationContext> GetContext(object model, Type modelType, TSerializationContext context, SerializationContextMode contextMode, ISerializationConfiguration configuration = null) { Argument.IsNotNull("modelType", modelType); Argument.IsNotNull("context", context); return(new SerializationContext <TSerializationContext>(model, modelType, context, contextMode, configuration)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> protected override ISerializationContext <XmlSerializationContextInfo> GetContext(ModelBase model, Stream stream, SerializationContextMode contextMode) { XDocument document = null; try { if (stream.Length != 0) { document = XDocument.Load(stream); } } catch (Exception ex) { Log.Warning(ex, "Failed to load document from stream, falling back to empty document"); } bool isNewDocument = document == null; if (isNewDocument) { var rootName = (model != null) ? model.GetType().Name : "root"; document = new XDocument(new XElement(rootName)); } var contextInfo = new XmlSerializationContextInfo(document.Root, model); var context = new SerializationContext <XmlSerializationContextInfo>(model, contextInfo, contextMode); if (isNewDocument) { AddReferenceId(context, document.Root, model); } return(context); }
protected override ISerializationContext<XmlSerializationContextInfo> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration) { return GetSerializationContextInfo(model, modelType, stream, contextMode, configuration); }
/// <summary> /// Gets the serializer specific serialization context info. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configuration" /> is <c>null</c>.</exception> protected override ISerializationContext <JsonSerializationContextInfo> GetSerializationContextInfo(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration) { JsonReader jsonReader = null; JsonWriter jsonWriter = null; var useBson = false; var dateTimeKind = DateTimeKind.Unspecified; var dateParseHandling = DateParseHandling.None; var dateTimeZoneHandling = DateTimeZoneHandling.Unspecified; var formatting = Formatting.None; var jsonConfiguration = configuration as JsonSerializationConfiguration; if (jsonConfiguration != null) { useBson = jsonConfiguration.UseBson; dateTimeKind = jsonConfiguration.DateTimeKind; dateParseHandling = jsonConfiguration.DateParseHandling; dateTimeZoneHandling = jsonConfiguration.DateTimeZoneHandling; formatting = jsonConfiguration.Formatting; } switch (contextMode) { case SerializationContextMode.Serialization: if (useBson) { #if SUPPORT_BSON #pragma warning disable 618 jsonWriter = new BsonWriter(stream); #pragma warning restore 618 #endif } if (jsonWriter is null) { var streamWriter = new StreamWriter(stream, Encoding.UTF8); jsonWriter = new JsonTextWriter(streamWriter); } break; case SerializationContextMode.Deserialization: if (useBson) { #if SUPPORT_BSON var shouldSerializeAsCollection = false; var shouldSerializeAsDictionary = ShouldSerializeAsDictionary(modelType); if (!shouldSerializeAsDictionary) { // Only check if we should deserialize as collection if we are not a dictionary shouldSerializeAsCollection = ShouldSerializeAsCollection(modelType); } #pragma warning disable 618 jsonReader = new BsonReader(stream, shouldSerializeAsCollection, dateTimeKind); #pragma warning restore 618 #endif } if (jsonReader is null) { #if DEBUG var streamPosition = stream.Position; var debugStreamReader = new StreamReader(stream, Encoding.UTF8); var content = debugStreamReader.ReadToEnd(); Log.Debug(content); stream.Position = streamPosition; #endif var streamReader = new StreamReader(stream, Encoding.UTF8); jsonReader = new JsonTextReader(streamReader); } break; default: throw new ArgumentOutOfRangeException("contextMode"); } if (jsonReader != null) { jsonReader.Culture = configuration.Culture; jsonReader.DateParseHandling = dateParseHandling; jsonReader.DateTimeZoneHandling = dateTimeZoneHandling; } if (jsonWriter != null) { jsonWriter.Culture = configuration.Culture; jsonWriter.DateTimeZoneHandling = dateTimeZoneHandling; jsonWriter.Formatting = formatting; } return(GetSerializationContextInfo(model, modelType, jsonReader, jsonWriter, contextMode, null, null, configuration)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>ISerializationContext{SerializationInfo}.</returns> /// <exception cref="System.ArgumentOutOfRangeException">contextMode</exception> protected override ISerializationContext <JsonSerializationContextInfo> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode) { JsonReader jsonReader = null; JsonWriter jsonWriter = null; switch (contextMode) { case SerializationContextMode.Serialization: jsonWriter = new JsonTextWriter(new StreamWriter(stream, Encoding.UTF8)); break; case SerializationContextMode.Deserialization: jsonReader = new JsonTextReader(new StreamReader(stream, Encoding.UTF8)); break; default: throw new ArgumentOutOfRangeException("contextMode"); } return(GetContext(model, modelType, jsonReader, jsonWriter, contextMode, null, null)); }
/// <summary> /// Gets the serializer specific serialization context info. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configuration" /> is <c>null</c>.</exception> protected override ISerializationContext <BinarySerializationContextInfo> GetSerializationContextInfo(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration) { return(GetSerializationContextInfo(model, modelType, stream, contextMode, null, configuration)); }
/// <summary> /// Gets the context for the specified model type. /// <para /> /// Use this method when no model instance is available. This method will create one. /// </summary> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="stream" /> is <c>null</c>.</exception> protected ISerializationContext <TSerializationContext> GetContext(Type modelType, Stream stream, SerializationContextMode contextMode) { Argument.IsNotNull("modelType", modelType); Argument.IsNotNull("stream", stream); var model = (ModelBase)TypeFactory.Default.CreateInstance(modelType); return(GetContext(model, stream, contextMode)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// The serialization context. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="modelType" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="configuration" /> is <c>null</c>.</exception> protected abstract ISerializationContext <TSerializationContext> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode, ISerializationConfiguration configuration);
/// <summary> /// Gets the context for the specified model instance. /// </summary> /// <param name="model">The model.</param> /// <param name="context">The context.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="context" /> is <c>null</c>.</exception> protected virtual ISerializationContext <TSerializationContext> GetContext(ModelBase model, TSerializationContext context, SerializationContextMode contextMode) { Argument.IsNotNull("model", model); Argument.IsNotNull("context", context); return(new SerializationContext <TSerializationContext>(model, context, contextMode)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <param name="memberValues">The member values.</param> /// <returns>The serialization context.</returns> private ISerializationContext <BinarySerializationContextInfo> GetContext(ModelBase model, Stream stream, SerializationContextMode contextMode, List <MemberValue> memberValues) { var serializationInfo = new SerializationInfo(model.GetType(), new FormatterConverter()); var binaryFormatter = CreateBinaryFormatter(contextMode); if (memberValues == null) { memberValues = new List <MemberValue>(); } var contextInfo = new BinarySerializationContextInfo(serializationInfo, binaryFormatter, memberValues); return(new SerializationContext <BinarySerializationContextInfo>(model, contextInfo, contextMode)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> /// <exception cref="ArgumentNullException">The <paramref name="model" /> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="stream" /> is <c>null</c>.</exception> protected abstract ISerializationContext <TSerializationContext> GetContext(ModelBase model, Stream stream, SerializationContextMode contextMode);
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>The serialization context.</returns> protected override ISerializationContext <XmlSerializationContextInfo> GetContext(ModelBase model, Stream stream, SerializationContextMode contextMode) { XDocument document = null; try { if (stream.Length != 0) { document = XDocument.Load(stream); } } catch (Exception ex) { Log.Warning(ex, "Failed to load document from stream, falling back to empty document"); } bool isNewDocument = document == null; if (isNewDocument) { var rootName = "root"; if (model != null) { var modelType = model.GetType(); rootName = _rootNameCache.GetFromCacheOrFetch(modelType, () => { XmlRootAttribute xmlRootAttribute; if (AttributeHelper.TryGetAttribute(modelType, out xmlRootAttribute)) { return(xmlRootAttribute.ElementName); } return(rootName = model.GetType().Name); }); } document = new XDocument(new XElement(rootName)); } var contextInfo = new XmlSerializationContextInfo(document.Root, model); var context = new SerializationContext <XmlSerializationContextInfo>(model, contextInfo, contextMode); if (isNewDocument) { AddReferenceId(context, document.Root, model); } return(context); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model, can be <c>null</c> for value types.</param> /// <param name="modelType">Type of the model.</param> /// <param name="stream">The stream.</param> /// <param name="contextMode">The context mode.</param> /// <returns>ISerializationContext{SerializationInfo}.</returns> protected override ISerializationContext <BinarySerializationContextInfo> GetContext(object model, Type modelType, Stream stream, SerializationContextMode contextMode) { return(GetContext(model, modelType, stream, contextMode, null)); }
/// <summary> /// Gets the context. /// </summary> /// <param name="model">The model.</param> /// <param name="modelType">Type of the model.</param> /// <param name="jsonReader">The json reader.</param> /// <param name="jsonWriter">The json writer.</param> /// <param name="contextMode">The context mode.</param> /// <param name="jsonProperties">The json properties.</param> /// <param name="jsonArray">The json array.</param> /// <param name="configuration">The configuration.</param> /// <returns> /// ISerializationContext<JsonSerializationContextInfo>. /// </returns> protected virtual ISerializationContext <JsonSerializationContextInfo> GetContext(object model, Type modelType, JsonReader jsonReader, JsonWriter jsonWriter, SerializationContextMode contextMode, Dictionary <string, JProperty> jsonProperties, JArray jsonArray, ISerializationConfiguration configuration) { var jsonSerializer = new Newtonsoft.Json.JsonSerializer(); jsonSerializer.ContractResolver = new CatelJsonContractResolver(); jsonSerializer.Converters.Add(new CatelJsonConverter(this, configuration)); var contextInfo = new JsonSerializationContextInfo(jsonSerializer, jsonReader, jsonWriter); if (jsonProperties != null) { contextInfo.JsonProperties = jsonProperties; } if (jsonArray != null) { contextInfo.JsonArray = jsonArray; } var context = new SerializationContext <JsonSerializationContextInfo>(model, modelType, contextInfo, contextMode, configuration); return(context); }
protected ISerializationContext <TSerializationContext> GetContext(Type modelType, TSerializationContext context, SerializationContextMode contextMode) { return(GetContext(modelType, context, contextMode, null)); }