コード例 #1
0
        //IEnumerable<object> Read(params Type[] eventTypes);

        //void Invoke(params KeyValuePair<Type, Action<object>>[] handlers);

        private List <TypeReaderFactory> CreateTypeReaders(Dictionary <Type, Action <object> > handlers)
        {
            var knownProxies = new Dictionary <Type, List <Type> >();

            var typesMap    = new Type[ushort.MaxValue];
            var typeReaders = new TypeReaderFactory[ushort.MaxValue];

            foreach (var type in handlers)
            {
                var originalTypes = knownProxies.ContainsKey(type.Key) ? knownProxies[type.Key] : new List <Type> {
                    type.Key
                };

                foreach (var originalType in originalTypes)
                {
                    if (_typeIdsMap.ContainsKey(originalType.FullName))
                    {
                        var typeId = _typeIdsMap[originalType.FullName];
                        var path   = _folder + "\\" + originalType.FullName + "\\";

                        typesMap[typeId]    = type.Key;
                        typeReaders[typeId] = new TypeReaderFactory(path, type.Key, _customReaders)
                        {
                            Handler = handlers[type.Key]
                        };
                    }
                }
            }

            return(typeReaders.Where(t => t != null).ToList());
        }