public void UpdateKnownTypeDetail(InterfaceDescription interfaceDescription) { var responseKnownTypes = new List <Type>(); var requestKnownType = new List <Type>(); foreach (var entry in interfaceDescription.Methods) { if (TypeUtility.IsTaskType(entry.ReturnType) && entry.ReturnType.GetTypeInfo().IsGenericType) { var returnType = entry.MethodInfo.ReturnType.GetGenericArguments()[0]; if (!responseKnownTypes.Contains(returnType)) { responseKnownTypes.Add(returnType); } } requestKnownType.AddRange(entry.MethodInfo.GetParameters() .ToList() .Select(p => p.ParameterType) .Except(requestKnownType)); } var knownType = new InterfaceDetails(); knownType.Id = interfaceDescription.Id; knownType.ServiceInterfaceType = interfaceDescription.InterfaceType; knownType.RequestKnownTypes = requestKnownType; knownType.ResponseKnownTypes = responseKnownTypes; knownType.MethodNames = interfaceDescription.Methods.ToDictionary(item => item.Name, item => item.Id); this.UpdateKnownTypes(interfaceDescription.Id, interfaceDescription.InterfaceType.FullName, knownType); }
public bool TryGetKnownTypes(string interfaceName, out InterfaceDetails interfaceDetails) { int interfaceId; if (!this.interfaceIdMapping.TryGetValue(interfaceName, out interfaceId)) { ServiceTrace.Source.WriteInfo(TraceType, "InterfaceName {0} not found ", interfaceName); interfaceDetails = null; return(false); } return(this.knownTypesMap.TryGetValue(interfaceId, out interfaceDetails)); }
private void UpdateKnownTypes(int interfaceId, string interfaceName, InterfaceDetails knownTypes) { if (this.knownTypesMap.ContainsKey(interfaceId)) { ServiceTrace.Source.WriteInfo(TraceType, "InterfaceId {0} and InterfaceName {1} already existing ", interfaceId, interfaceName); return; } if (this.knownTypesMap.TryAdd(interfaceId, knownTypes)) { this.interfaceIdMapping.TryAdd(interfaceName, interfaceId); } }
internal static bool TryGetKnownTypes(string interfaceName, out InterfaceDetails interfaceDetails) { return(InterfaceDetailsStore.TryGetKnownTypes(interfaceName, out interfaceDetails)); }
public bool TryGetKnownTypes(int interfaceId, out InterfaceDetails interfaceDetails) { return(this.knownTypesMap.TryGetValue(interfaceId, out interfaceDetails)); }