哈玛林.Xamarin iOS Linker 导致 AutoMapper 问题



我正在开发一个使用AutoMapper的Xamarin项目。当链接设置为"仅链接框架 SDK"时,初始化映射时出现以下错误

System.ArgumentNullException:值不能为空。参数名称: 方法

例外没有太多可继续的,调用堆栈也没有

AutoMapper.Mappers.ConvertMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Mappers.NullableSourceMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression

AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.TryPropertyMap
AutoMapper.Execution.TypeMapPlanBuilder.CreateAssignmentFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreateMapperLambda
AutoMapper.TypeMap.Seal AutoMapper.MapperConfiguration.Seal
AutoMapper.MapperConfiguration..ctor
AutoMapper.MapperConfiguration..ctor AutoMapper.Mapper.Initialize

最初的读数表明,链接器只是从我们使用的某个类中删除了一些属性或方法。

但是,在注释掉大多数映射然后一次重新引入它们之后,我发现此类当前导致错误。

[Preserve]
internal class ItemBase : CareRecordItemBase
{
[Preserve]
public string Topic { get; set; }

[Preserve]
public string InPractice { get; set; }

[Preserve]
public string PrivateVal { get; set; }
}

如果我注释掉InPractice属性,则不会抛出异常。这对我来说毫无意义。谁能解释为什么这可能是一个问题?

有没有更好的方法来诊断这些问题?

基于Pat的回答:

  1. 添加一个 XML 文件LinkDescription.xml,您可以将其命名为任何您想要的名称。
  2. 添加此代码:
<linker> 
<assembly fullname="mscorlib">
<type fullname="System.Convert" preserve="All" />
</assembly>
</linker>
  1. 将文件的生成操作设置为LinkDescription

参见AutoMapper作者Lucian Bargaoanu的评论。我需要包含一个将配置添加到链接过程的 xml 文件。

Lucian提到了这个自动映射器问题,https://github.com/AutoMapper/AutoMapper/issues/2272

另请参阅

自定义链接器配置

相关内容

  • 没有找到相关文章

最新更新