/// <summary> /// Gets all the parameter's descendents /// </summary> /// <param name="p">Contract parameter</param> /// <returns>Enumerator of descendents</returns> public static IEnumerable <ContractParameter> GetAllDescendents(this IContractParameterHost p) { for (int i = 0; i < p.ParameterCount; i++) { ContractParameter child = p.GetParameter(i); yield return(child); foreach (ContractParameter descendent in child.GetAllDescendents()) { yield return(descendent); } } }