示例#1
0
        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);
        }
示例#2
0
 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);
                     }
                 }
             }
         }
     }
 }
示例#3
0
 private void RegisterDecoder(string chunkId, BaseDecoder decoder)
 {
     chunkDecoders.Add(chunkId, decoder);
 }