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

时间:2018-10-24 15:26:27

标签: c# automapper automapper-7

我试图将一些我没有编写的代码从AutoMapper 4.0.4升级到7.0.1,但遇到了问题。有一个TypeConverter看起来像这样:

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);
...

但是ITypeConverter和ResolutionContext接口现在已更改。 ResolutionContext不再具有SourceValueDestinationValuePropertyMapParent属性。我认为,由于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的输入为null,因此显然我仍然需要if语句正在执行的逻辑,但是如何为AutoMapper 7重写它呢?

0 个答案:

没有答案