Код C # для создания значений DDL AutoMapper (текст, значение) из * any * Object Model Object, предоставляя два имени поля в параметрах - PullRequest
0 голосов
/ 27 октября 2010

Каким будет код C # для создания (службы) метода, возвращающего объект (ViewModel для DDL) с использованием AutoMapper и предоставления двух имен полей в качестве параметров?

DDL для выпадающего списка:

public class DDLitems {
    public string text {get;set;}
    public string value {get;set}
}

Моя ужасная идея псевдо-кода C #: (да, пока не знаю, как это сделать):

public IList<DDLobject> AutoMapDDLvalue( IList<object> source,
                                         type objectClass.textFieldName,
                                         type objectClass.valueFieldName)
{
    var EntityRepository = new EntityRepository();
    Mapper.CreateMap<source.type, DDLobject>()
          .ForMember(dest => dest.text, 
                      opt => opt.MapFrom(src => src.objectClass.textFieldName))
          .ForMember(dest => dest.value, 
                      opt => opt.MapFrom(src => src.objectClass.valueFieldName));
    return Mapper.Map<IList<source>, IList<DDLobject>>(EntityRepository.Get());
 }

Я просто подумал, что типы полей нужно будет преобразовать в строку. Я думаю, мы могли бы добавить общий .ToString () к каждому.

1 Ответ

1 голос
/ 27 октября 2010

У меня нет абсолютно никакого опыта работы с AutoMapper, но я думаю, что проблема сводится к получению свойства от объекта, когда вы знаете имя свойства только во время выполнения.отражение для:)

Вы можете получить свойство объекта, используя это:

public object GetProperty(object obj, string propertyName)
{
  PropertyInfo pi = obj.GetType().GetProperty(propertyName);
  object value = pi.GetValue(o, null);
  //or object value = pi.GetGetMethod().Invoke(obj, null)
  return value;
}
...