Boo.Lang.Compiler.TypeSystem.Generics.GenericsServices.FindGenericParameters C# (CSharp) Метод

FindGenericParameters() публичный статический Метод

Yields the generic parameters used in a (bound) type.
public static FindGenericParameters ( IType type ) : IEnumerable
type IType
Результат IEnumerable
        public static IEnumerable<IGenericParameter> FindGenericParameters(IType type)
        {
            IGenericParameter genericParameter = type as IGenericParameter;
            if (genericParameter != null)
            {
                yield return genericParameter;
                yield break;
            }

            if (type is IArrayType)
            {
                foreach (IGenericParameter gp in FindGenericParameters(type.ElementType)) yield return gp;
                yield break;
            }

            if (type.ConstructedInfo != null)
            {
                foreach (IType typeArgument in type.ConstructedInfo.GenericArguments)
                {
                    foreach (IGenericParameter gp in FindGenericParameters(typeArgument)) yield return gp;
                }
                yield break;
            }

            ICallableType callableType = type as ICallableType;
            if (callableType != null)
            {
                CallableSignature signature = callableType.GetSignature();
                foreach (IGenericParameter gp in FindGenericParameters(signature.ReturnType)) yield return gp;
                foreach (IParameter parameter in signature.Parameters)
                {
                    foreach (IGenericParameter gp in FindGenericParameters(parameter.Type)) yield return gp;
                }
                yield break;
            }
        }