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); } } }