public static DeserializerFactory CreateDefault(params DeserializationRule[] additionalRules) { var ans = new DeserializerFactory(); foreach (var serializationRule in additionalRules) { ans.AddRule(serializationRule); } ans.AddRule(DeserializationRule.Create(new ByteArrayDeserializer())); ans.AddRule(DeserializationRule.Create(new ByteEnumerableDeserializer())); ans.AddRule(DeserializationRule.Create(new UnicodeDeserializer())); ans.AddRule(DeserializationRule.Create(new UTCFileTimeDeserializer())); ans.AddRule(DeserializationRule.Create(new UTCFileTimeAndOffsetDeserializer())); ans.AddRule(new DeserializationRule(t => t.GetTypeInfo().IsDefined(typeof(ProtoBuf.ProtoContractAttribute)), CreateProtoDeserializer)); ans.AddRule(new DeserializationRule(t => t.IsArray, CreateArrayDeserializer)); ans.AddRule(new DeserializationRule(t => t.GetTypeInfo().IsEnum, CreateEnumDeserializer)); ans.AddRule(new DeserializationRule(PresentationHelper.IsNulable, CreateDotNetNullableSerializer)); ans.AddRule(new DeserializationRule(t => t.GetTypeInfo().IsValueType, CreateDotNetValueTypeSerializer)); return(ans); }
public void AddRule(DeserializationRule rule) { _rules.Add(rule); }