Ejemplo n.º 1
0
        public override void Unregister(V extension, ConversionKey key)
        {
            ParamChecker.AssertParamNotNull(extension, "extension");
            ParamChecker.AssertParamNotNull(key, "key");

            Object writeLock = GetWriteLock();

            lock (writeLock)
            {
                base.Unregister(extension, key);

                ClassTupleEntry <V> classEntry = CopyStructure();
                HashMap <Strong2Key <V>, List <Def2Entry <V> > > definitionReverseMap = classEntry.definitionReverseMap;
                List <Def2Entry <V> > weakEntriesOfStrongType = definitionReverseMap.Remove(new Strong2Key <V>(extension, key));
                if (weakEntriesOfStrongType == null)
                {
                    return;
                }
                HashMap <ConversionKey, Object> typeToDefEntryMap = classEntry.typeToDefEntryMap;
                for (int a = weakEntriesOfStrongType.Count; a-- > 0;)
                {
                    Def2Entry <V> defEntry                  = weakEntriesOfStrongType[a];
                    ConversionKey registeredKey             = new ConversionKey(defEntry.sourceType, defEntry.targetType);
                    Object        value                     = typeToDefEntryMap.Get(registeredKey);
                    InterfaceFastList <Def2Entry <V> > list = (InterfaceFastList <Def2Entry <V> >)value;
                    list.Remove(defEntry);
                    if (list.Count == 0)
                    {
                        typeToDefEntryMap.Remove(registeredKey);
                    }
                    TypeToDefEntryMapChanged(classEntry, registeredKey);
                }
                this.classEntry = classEntry;
            }
        }
Ejemplo n.º 2
0
        public override void Register(V extension, ConversionKey key)
        {
            ParamChecker.AssertParamNotNull(extension, "extension");
            ParamChecker.AssertParamNotNull(key, "key");
            Object writeLock = GetWriteLock();

            lock (writeLock)
            {
                base.Register(extension, key);

                ClassTupleEntry <V> classEntry = CopyStructure();
                AppendRegistration(key, key, extension, 0, 0, classEntry);
                CheckToWeakRegisterExistingTypes(key, extension, classEntry);
                CheckToWeakRegisterExistingExtensions(key, classEntry);
                this.classEntry = classEntry;
            }
        }
Ejemplo n.º 3
0
 public void Unregister(V extension, Type sourceType, Type targetType)
 {
     ParamChecker.AssertParamNotNull(sourceType, "sourceType");
     ParamChecker.AssertParamNotNull(targetType, "targetType");
     Unregister(extension, new ConversionKey(sourceType, targetType));
 }