Catel.Fody.CecilExtensions.BuildIFaces C# (CSharp) Method

BuildIFaces() private static method

private static BuildIFaces ( Mono.Cecil.TypeDefinition type, TypeReference>.IDictionary genericArgsMap ) : IEnumerable
type Mono.Cecil.TypeDefinition
genericArgsMap TypeReference>.IDictionary
return IEnumerable
        private static IEnumerable<TypeReference> BuildIFaces(TypeDefinition type, IDictionary<string, TypeReference> genericArgsMap)
        {
            var mappedFromSuperType = new List<TypeReference>();

            foreach (var iface in type.Interfaces)
            {
                var result = iface;

                if (iface is GenericInstanceType)
                {
                    var map = GetGenericArgsMap(iface, genericArgsMap, mappedFromSuperType);

                    if (mappedFromSuperType.Any())
                    {
                        result = ((GenericInstanceType)iface).ElementType.MakeGenericInstanceType(map.Select(x => x.Value).ToArray());
                    }
                }

                yield return result;
            }
        }