Собственная компиляция UWP - этот объект не может быть вызван, потому что он был разрешен только для просмотра - PullRequest
0 голосов
/ 19 февраля 2020

При компиляции UWP Native мой образец прикреплен и дает невероятные результаты:

http://www.fasthomestore.it/UwpDotNativeIssues-master.zip

  1. Распаковать прикрепленный образец
  2. Перестройте все с VS 2019 в режиме релиза родной компиляции
  3. Все работает хорошо !!
  4. Сейчас
  5. Остановить отладку
  6. Ввести в пакет управления Nutget для проекта TestAutomapper
  7. Удалить пакет «MyToolkit.Extended» из проекта (этот пакет не является используется в решении, но крайне важно, чтобы приложение работало)
  8. Теперь REBUILD ALL
  9. Запустите приложение
  10. Исключение составляет throw:

Этот объект не может быть вызван, так как он был включен для метаданных только для просмотра: 'System.Fun c, AutoMapper.ResolutionContext, System.Collections.Generi c .List> .Invoke (ClassLibrary3.AnagraficaBridge , ClassLibrary3.AnagraficheSinteticheBridge, System.Collections.Generi c .List, AutoMapper.ResolutionContext) 'Для получения дополнительной информации, пожалуйста, посетите http://go.microsoft.com/fwlink/?LinkID=616867'

I Я пытаюсь изменить свой default.rd. xml без положительных результатов.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 20 февраля 2020

Если вы хотите создать карту между этими двумя различными типами: AnagraficaBridge и AnagraficheSinteticheBridge, вам нужно использовать следующий метод:

TDestination Map<TSource, TDestination>(TSource source, Action<IMappingOperationOptions<TSource, TDestination>> opts);

вместо

TDestination Map<TDestination>(object source, Action<IMappingOperationOptions> opts);

Второй метод используется для того же типа отображения.

Обновление:

Кроме того, в результате моего тестирования вы можете просто получить resolutionContext в методе AfterMap, чтобы присвоить значение спискам из класса AnagraficheSinteticheBridge. Например:

//Initialize
var config = new MapperConfiguration(cfg =>
{
    cfg.AddCollectionMappers();

    cfg.CreateMap<TelefonoEmailBridge, TelefonoEmailBridge>();

    cfg.CreateMap<AnagraficaBridge, AnagraficheSinteticheBridge>().AfterMap((src, dest,context) =>
    {
        dest.Cognome = src.Cognome;
        dest.Telefoni = (List<TelefonoEmailBridge>)context.Items["Telefoni"];
        dest.Email = (List<TelefonoEmailBridge>)context.Items["Email"];
    });

});

......

//map
var result = BridgeDataMapper.Map<AnagraficaBridge,AnagraficheSinteticheBridge>(AnagraficaDataForm, opts =>
{ 
    opts.Items["Telefoni"] = BridgeDataMapper.Map<IEnumerable<TelefonoEmailBridge>>(elencoTelefoni);
    opts.Items["Email"] = BridgeDataMapper.Map<IEnumerable<TelefonoEmailBridge>>(elencoEmail);
});
...