Passando o nome da propriedade fortemente tipado como argumento
Eu tenho uma coleção deIEnumerable<School>
que está sendo passado para um método de extensão que preenche umDropDownList
. Eu também gostaria de passar oDataValueField
eDataTextField
como um argumento, mas eu queria que eles fossem fortemente tipados.
Basicamente, eu não quero passar umstring
para oDataValueField
eDataTextField
argumentos, é propenso a erros.
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();
}
Chamado assim ...
myDropDownList.populateDropDownList(states,
school => school.stateCode,
school => school.stateName);
Minha pergunta é: como posso passar oDataValueField
eDataTextField
fortemente tipado como um argumento para populateDropDownList?