Compte tenu des types de source suivants: et les types de destination suivants p> avec les mappages suivants: p> XXX PRE> Puis-je faire ce qui suit (exemple trivial) - étant donné que je ne connais pas le type de mode de vue avant l'exécution? P> BaseViewModel myViewModel = GetAViewModelFromSomewhere();
FirstDtoImpl dto = (FirstDtoImpl)Mapper.Map<BaseViewModel,BaseDto>(myViewModel);
4 Réponses :
Pouvez-vous utiliser une interface à la place? En outre, il existe une implantation de mappeuse non générique.MAP qui pourrait fonctionner mieux dans ce cas. Si vous avez la cartographie configurée, vous pouvez simplement passer du type. p>
Je ne suis pas sûr qu'une interface aiderait et que le non-générique exige toujours que je connais le type concret.
Ne seriez-vous pas capable de passer dans typeof (Obj) comme un paramètre? Vous pouvez sûrement résoudre le type d'en quelque sorte.
La seule mise en garde Il y a que si vous passez en deux types que vous n'avez pas de mappage, vous pourriez avoir des problèmes.
Non Ceci n'est pas correct si vous créez une cartographie pour les types dérivés, vous devriez quand Objets de la carte Spécifiez la classe dérivée également p>
Vous ne pouvez pas le faire directement, mais vous pouvez le contourner avec un typeconverter.
dans les mappages que vous ajouterez: p> alors vous pouvez créer le convertisseur comme: p> alors vous pouvez l'utiliser comme: p> BaseDto dto= Mapper.Map<BaseViewModel,BaseDto>(myViewModel);
Cela semble prometteur. Les types de base n'ont pas d'importance - ils sont abstraits dans mon code actuel.
J'ai constaté que si je changez les mappages sur , cela fonctionne comme prévu sans utiliser le convertisseur de type. P> P>
Droite je viens d'essayer cela et on dirait que ce n'est pas possible - sauf si je manque quelque chose?