代码之家  ›  专栏  ›  技术社区  ›  adam0101

如何升级此TypeConverter以使用最新版本的AutoMapper?

  •  1
  • adam0101  · 技术社区  · 6 年前

    我正在尝试升级一些不是从AutoMapper 4.0编写的代码。4至7.0。我遇到了一个问题。有一个类型转换器如下所示:

    public class BaseListTypeConverter<TCol1, TCol2, T1, T2> : ITypeConverter<TCol1, TCol2>
        where TCol1 : ICollection<T1>
        where TCol2 : ICollection<T2>
        where T1 : class
        where T2 : class
    {
        public TCol2 Convert(ResolutionContext context)
        {
            var sourceList = (TCol1)context.SourceValue;
            TCol2 destinationList = default(TCol2);
    
            if (context.PropertyMap == null
                || context.Parent == null
                || context.Parent.DestinationValue == null)
                destinationList = (TCol2)context.DestinationValue;
            else
                destinationList = (TCol2)context.PropertyMap.DestinationProperty.GetValue(context.Parent.DestinationValue);
    ...
    

    SourceValue DestinationValue , PropertyMap Parent 财产。我想自从 Covert 方法具有源对象和目标对象的参数,我可以省略第一个参数 if

    public class BaseListTypeConverter<TCol1, TCol2, T1, T2> : ITypeConverter<TCol1, TCol2>
        where TCol1 : ICollection<T1>
        where TCol2 : ICollection<T2>
        where T1 : class
        where T2 : class
    {
        public TCol2 Convert(TCol1 sourceList, TCol2 destinationList, ResolutionContext context)
        {
    ...
    

    但是参数 destinationList 是空的,所以很明显我还需要任何逻辑 如果 语句正在执行,但如何为AutoMapper 7重写它?

    0 回复  |  直到 6 年前