public void Add(Type interfaceType, Type classType, Type proxyType)
        {
            if (classType == null)
            {
                throw new ArgumentNullException(nameof(classType));
            }

            if (proxyType == null)
            {
                throw new ArgumentNullException(nameof(proxyType));
            }

            if (interfaceType == null)
            {
                _proxyClassContainer.AddValue(classType, proxyType);
            }
            else
            {
                var dict = _proxyInterfaceContainer.GetValue(interfaceType);
                if (dict == null)
                {
                    var tmp = new TypeDictionary <Type>();
                    tmp.AddValue(classType, proxyType);
                    _proxyInterfaceContainer.AddValue(interfaceType, tmp);
                }
                else
                {
                    dict.AddValue(classType, proxyType);
                }
            }
        }