public void Add(string chunkId, BaseDecoder decoder) { List <BaseDecoder> decoders; if (map.ContainsKey(chunkId)) { decoders = map[chunkId]; } else { decoders = new List <BaseDecoder>(); map.Add(chunkId, decoders); } decoders.Add(decoder); }
private void RegisterDecoders() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); foreach (Type type in types) { if (type.IsSubclassOf(typeof(BaseDecoder)) && !type.IsAbstract) { BaseDecoder decoder = Activator.CreateInstance(type) as BaseDecoder; object[] attrs = type.GetCustomAttributes(typeof(DecodesChunksAttribute), false); foreach (object attr in attrs) { DecodesChunksAttribute chunkAttr = attr as DecodesChunksAttribute; if (chunkAttr != null) { foreach (string chunkId in chunkAttr.ChunkIds) { RegisterDecoder(chunkId, decoder); } } } } } }
private void RegisterDecoder(string chunkId, BaseDecoder decoder) { chunkDecoders.Add(chunkId, decoder); }