首页 > 解决方案 > TinyMapper null 检查绑定表达式

问题描述

下面是我的课

public class CommonClassSource
{
public int Id {get;set;}
}

public class CommonClassDestination
{
public int Id {get;set;}
}

public class SourceClass
{
public CommonClassSource CommonSource {get;set;}
}

public class DestinationClass
{
public CommonClassDestination CommonDestination {get;set;}
}

有没有办法在 config.Bind 中添加空检查?例如:这里,检查 source.CommonSource 是否为空

TinyMapper.Bind<SourceClass, DestinationClass>(config => {
config.Bind(source => source.CommonSource.Id,
                  target => target.CommonDestination.Id));
});

标签: c#tinymapper

解决方案


如果您想要处理的所有情况都没有问题 when source.CommonSourceis null,那么以下脚本应该适合您。

    static bool isSourceNull;
    public static void Main()
    {

        Func<SourceClass,object> getSCI = GetSourceClassId;
        Func<DestinationClass, object> getDCI = GetDestClassId;
        TinyMapper.Bind<SourceClass, DestinationClass>(config => {
            config.Bind(source=>getSCI,
                          target =>getDCI);
    });
    }
    static object GetSourceClassId(SourceClass source)
    {
        isSourceNull = source.CommonSource == null;
        if (isSourceNull) return -1;
        else return source.CommonSource.Id;
    }
    static object GetDestClassId(DestinationClass destinationClass)
    {
        if (isSourceNull) 
        {
        destinationClass.CommonDestination = null;
            return -1;
        }
        else if (destinationClass.CommonDestination != null)
            return destinationClass.CommonDestination.Id;
        else return -1;
    }

推荐阅读