Ejemplo n.º 1
0
        public static IHiPerfSerializationSurrogate GenerateSurrogateForEvent(Type eventType)
        {
            IHiPerfSerializationSurrogate surrogateInstance = _defaultSurrogate;
            Type surrType = null;

            if (!eventType.IsAbstract && !HasSerializableAttribute(eventType.GetCustomAttributes(true)))
            {
                surrType = IntermediateLanguageSurrogateBuilder.GenerateSerializationSurrogateType <IHiPerfSerializationSurrogate>(eventType);
            }

            if (surrType != null)
            {
                surrogateInstance = (IHiPerfSerializationSurrogate)Activator.CreateInstance(surrType);
            }
            surrogateInstance.SetTypeHandle(_intHandleCounter);

            if (!_surrogateTypeMap.ContainsKey(eventType.Name))
            {
                _surrogateTypeMap.Add(eventType.Name, surrogateInstance);
            }

            if (!_eventTypeToNameMap.ContainsKey(eventType.FullName))
            {
                _eventTypeToNameMap.Add(eventType.FullName, eventType);
            }

            return(surrogateInstance);
        }
Ejemplo n.º 2
0
        public void Serialize(Stream serializationStream, object graph)
        {
            Type eventType = graph.GetType();

            IHiPerfSerializationSurrogate surrogate = GetSurrogateFromType(eventType);

            _binaryWriter = new BinaryWriter(serializationStream);
            _binaryWriter.Write(eventType.FullName);
            surrogate.Serialize(_binaryWriter, graph);
        }
Ejemplo n.º 3
0
        private IHiPerfSerializationSurrogate GetSurrogateFromType(Type eventType)
        {
            IHiPerfSerializationSurrogate sr = null;

            string n = eventType.Name;

            if (_surrogateTypeMap.ContainsKey(n))
            {
                sr = (IHiPerfSerializationSurrogate)_surrogateTypeMap[n];
            }
            else
            {
                sr = _defaultSurrogate;// GenerateSurrogateForEvent(eventType);
            }
            return(sr);
        }