Przekazywanie silnie wpisanej nazwy właściwości jako argumentu

Mam kolekcjęIEnumerable<School> który jest przekazywany do metody rozszerzenia, która wypełnia aDropDownList. Chciałbym również przekazaćDataValueField iDataTextField jako argument, ale chciałem, żeby zostały mocno wpisane.

Zasadniczo nie chcę zdaćstring dlaDataValueField iDataTextField argumenty, jest podatny na błędy.

public static void populateDropDownList<T>(this DropDownList source,
        IEnumerable<T> dataSource,
        Func<T, string> dataValueField,
        Func<T, string> dataTextField) {
    source.DataValueField = dataValueField; //<-- this is wrong
    source.DataTextField = dataTextField; //<-- this is wrong
    source.DataSource = dataSource;
    source.DataBind();
}

Nazywany tak ...

myDropDownList.populateDropDownList(states,
        school => school.stateCode,
        school => school.stateName);

Moje pytanie brzmi, jak mogę przekazaćDataValueField iDataTextField silnie wpisany jako argument do populateDropDownList?

questionAnswers(3)

yourAnswerToTheQuestion