public EventDeserializer(ITypeNameMapper typeNameMapper = null, ITypeConvertorGenerator typeConvertorGenerator = null)
{
TypeNameMapper = typeNameMapper ?? new FullNameTypeMapper();
ConvertorGenerator = typeConvertorGenerator ?? new DefaultTypeConvertorGenerator();
_id2Info.Add(null); // 0 = null
_id2Info.Add(null); // 1 = back reference
foreach (var predefinedType in BasicSerializersFactory.TypeDescriptors)
{
var infoForType = new DeserializerTypeInfo
{
Id = _id2Info.Count,
Descriptor = predefinedType
};
_typeOrDescriptor2Info[predefinedType] = infoForType;
_id2Info.Add(infoForType);
_typeOrDescriptor2Info[predefinedType.GetPreferedType()] = infoForType;
var descriptorMultipleNativeTypes = predefinedType as ITypeDescriptorMultipleNativeTypes;
if (descriptorMultipleNativeTypes == null) continue;
foreach (var type in descriptorMultipleNativeTypes.GetNativeTypes())
{
_typeOrDescriptor2Info[type] = infoForType;
}
}
while (_id2Info.Count < ReservedBuildinTypes) _id2Info.Add(null);
}