/// <summary> /// Initialize NetSerializer /// </summary> /// <param name="rootTypes">Types to be (de)serialized</param> /// <param name="userTypeSerializers">Array of custom serializers</param> public Serializer(IEnumerable<Type> rootTypes, ITypeSerializer[] userTypeSerializers) { if (userTypeSerializers.All(s => s is IDynamicTypeSerializer || s is IStaticTypeSerializer) == false) throw new ArgumentException("TypeSerializers have to implement IDynamicTypeSerializer or IStaticTypeSerializer"); m_userTypeSerializers = userTypeSerializers; var typeDataMap = GenerateTypeData(rootTypes); GenerateDynamic(typeDataMap); m_typeIDMap = typeDataMap.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.TypeID); #if GENERATE_DEBUGGING_ASSEMBLY // Note: GenerateDebugAssembly overwrites some fields from typeDataMap GenerateDebugAssembly(typeDataMap); #endif }
/// <summary> /// Initialize NetSerializer /// </summary> /// <param name="rootTypes">Types to be (de)serialized</param> /// <param name="userTypeSerializers">Array of custom serializers</param> public static void Initialize(Type[] rootTypes, ITypeSerializer[] userTypeSerializers) { if (s_initialized) throw new InvalidOperationException("NetSerializer already initialized"); if (userTypeSerializers.All(s => s is IDynamicTypeSerializer || s is IStaticTypeSerializer) == false) throw new ArgumentException("TypeSerializers have to implement IDynamicTypeSerializer or IStaticTypeSerializer"); s_userTypeSerializers = userTypeSerializers; var typeDataMap = GenerateTypeData(rootTypes); GenerateDynamic(typeDataMap); s_typeIDMap = typeDataMap.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.TypeID); #if GENERATE_DEBUGGING_ASSEMBLY // Note: GenerateDebugAssembly overwrites some fields from typeDataMap GenerateDebugAssembly(typeDataMap); #endif s_initialized = true; }