Los argumentos de tipo para los métodos no se pueden inferir del uso. Intente especificar los argumentos de tipo explícitamente

Estoy tratando de completar el texto de Autocompletar desde SQL Server en el cuadro de texto usando el evento TextChanged ().[WindowsForm, C#]

Tengo un formulario de clase parcial

Evento TextChanged:

private void textBoxFilterCName_TextChanged(object sender, EventArgs e)
    {
        DataTable dt = FillCustomerName(textBoxFilterCName.Text);
        List<string> listNames = CustomerName.ConvertDataTableToList(dt);
        textBoxFilterCName.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        AutoCompleteStringCollection dataName = new AutoCompleteStringCollection();
        dataName.AddRange(listNames.ToArray());
        textBoxFilterCName.AutoCompleteCustomSource = dataName;
        textBoxFilterCName.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }

Recibo este error cuando llamo a este métodoCustomerName.ConvertDataTableToList().

Los argumentos de tipo para los métodos 'CustomerName.ConvertDataTableToList (DataTable)' no se pueden inferir del uso. Intente especificar los argumentos de tipo explícitamente.

Método FillCustomerName ()

public DataTable FillCustomerName(string cName)
    {
        DataTable dtName = new DataTable();
        List<string> listName = new List<string>();
        try
        {
            dbconnection.Open();
            string query = "SELECT [Name] FROM Customers WHERE Is_Active=1 AND Name like @CName + '%'";
            using (SqlCommand cmd = new SqlCommand(query, dbconnection))
            {
                cmd.Parameters.Add("CName", SqlDbType.VarChar).Value = cName;
                dtName.Load(cmd.ExecuteReader());
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Connection Error");
        }
        finally
        {
            dbconnection.Close();
        }
        return dtName;
    }

CustomerName Class:

public static class CustomerName
{
    private static T CreateItemFromRow<T>(DataRow row, IList<PropertyInfo> properties) where T : new()
    {
        T item = new T();
        foreach (var property in properties)
        {
            if (property.PropertyType == typeof(System.DayOfWeek))
            {
                DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), row[property.Name].ToString());
                property.SetValue(item, day, null);
            }
            else
            {
                property.SetValue(item, row[property.Name], null);
            }
        }
        return item;
    }
    public static List<T> ConvertDataTableToList<T>(this DataTable table) where T : new()
    {
        IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
        List<T> result = new List<T>();

        foreach (var row in table.Rows)
        {
            var item = CreateItemFromRow<T>((DataRow)row, properties);
            result.Add(item);
        }
        return result;            
    }
}

La consulta se ejecuta y los resultados se generan correctamente cuando depuro la aplicación. Pero no pude cargar los resultados de la tabla de datos como lista.

Posibles sugerencias para esta conversión son bienvenidas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta