public InterfaceClassPair GetInterfaceClassPair(string interfaceFullName) { if (!interfacesByName.ContainsKey(interfaceFullName)) { throw new KeyNotFoundException($"Interface `{interfaceFullName}` is not mapped"); } if (!pairsCache.ContainsKey(interfaceFullName)) { var interfaceType = interfacesByName[interfaceFullName]; var pair = InterfaceClassPair.CreateNew(interfaceType, pairs[interfaceType]); pairsCache.Add(interfaceFullName, pair); } return(pairsCache[interfaceFullName]); }
public void Add(Type interfaceType, Type classType) { var interfaceFullName = interfaceType.FullName; if (!interfacesByName.ContainsKey(interfaceFullName)) { interfacesByName.Add(interfaceFullName, interfaceType); } var pair = InterfaceClassPair.CreateNew(interfaceType, classType); if (!pairsCache.ContainsKey(interfaceFullName)) { pairs.Add(interfaceType, classType); pairsCache.Add(interfaceFullName, pair); } else { pairs[interfaceType] = classType; pairsCache[interfaceFullName] = pair; } }