Je possède ce code C# qui fonctionne très bien, qui saisit les deux champs et les met dans une liste pour une liste déroulante:C# Fonction qui accepte les paramètres de chaîne: Comment refactoriser pour utiliser quelque chose fortement typé?
var myDDL = GetDDLValues<Product>(myContact, "contactid", "companyname");
Je voudrais à prendre les deux paramètres de chaîne dans autre chose que cordes. Ce serait vraiment bien de faire: (! Réflexion par sweko Merci)
GetDDLValues<Product>(myContact, p => p.contactid, p => p.companyname)
Ce code appelle:
private object GetProperty(object obj, string propertyName)
{
PropertyInfo pi = obj.GetType().GetProperty(propertyName);
object value = pi.GetValue(obj, null);
return value;
}
public IList<DDLValues> GetDDLValues<T>(IList<T> objectListToMap,
string textProperty, string valueProperty)
{
if(objectListToMap != null && objectListToMap.Count > 0)
{
Mapper.CreateMap< T, DDLValues>()
.ForMember(dest => dest.text,
opt => opt.MapFrom(src => textProperty))
.ForMember(dest => dest.value,
opt => opt.MapFrom(src => valueProperty));
return Mapper.Map<IList<T>, IList<DDLValues>>(objectListToMap);
}
else
{
return null;
}
}
Dans votre GetDDLValues () la mise en œuvre, voulez-vous dire MapFrom (src => GetProperty (src, TextProperty))? – dahlbyk