I have a collection of IEnumerable<School>
that is being passed to an extension
method that populates a DropDownList
. I would also like to pass the
DataValueField
and DataTextField
as an argument but I wanted them to be
strongly typed.
Basically, I don't want to pass a string
for the DataValueField
and DataTextField
arguments, it's error prone.
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();
}
Called like so...
myDropDownList.populateDropDownList(states,
school => school.stateCode,
school => school.stateName);
My question is, how can I pass the DataValueField
and DataTextField
strongly typed as an argument to populateDropDownList?