AutoMapper определяет, что отображать на основе универсального типа - PullRequest
0 голосов
/ 17 марта 2011

Есть ли способ предоставить AutoMapper только источник и на основе указанного сопоставления для типа этого источника автоматически определить, что сопоставить?

Так, например, у меня есть тип Foo, и я всегда хочу, чтобы он отображался на Bar, но во время выполнения мой код может получить любой из нескольких универсальных типов.

        public T Add(T entity)
        {
            //List of mappings
            var mapList = new Dictionary<Type, Type> {
                      {typeof (Foo), typeof (Bar)}
                      {typeof (Widget), typeof (Sprocket)}
                      };

            //Based on the type of T determine what we map to...somehow!
            var t = mapList[entity.GetType()];

            //What goes in ?? to ensure var in the case of Foo will be a Bar?
            var destination = AutoMapper.Mapper.Map<T, ??>(entity);
        }

Любая помощь очень ценится.

1 Ответ

3 голосов
/ 25 марта 2011

Как говорит @tobsen, вам нужна неуниверсальная перегрузка:

public T Add(T entity)
    {
        //List of mappings
        var mapList = new Dictionary<Type, Type> {
                  {typeof (Foo), typeof (Bar)}
                  {typeof (Widget), typeof (Sprocket)}
                  };

        Type sourceType = typeof(T);
        Type destinationType = mapList[sourceType];
        object destination = AutoMapper.Mapper.Map(entity, sourceType, destinationType);
        // ... rest of code

    }

По моему опыту, общая перегрузка полезна, только если вы заранее знаете типы источника / назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...