У меня есть этот код C #, который прекрасно работает, который берет любые два поля и помещает их в список для выпадающего списка:
var myDDL = GetDDLValues<Product>( myContact, "contactid", "companyname");
Я бы хотел, чтобы два строковых параметра принимались не в строках, а в другом. Это было бы очень приятно сделать:
GetDDLValues<Product>( myContact, p => p.contactid, p => p.companyname)
Это код, который он вызывает (отражение sweko Спасибо!):
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;
}
}