c# - 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));
});
解决方案
如果您想要处理的所有情况都没有问题 when source.CommonSource
is 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;
}
推荐阅读
- javascript - 如何在HTML Canvas中以给定角度从给定坐标找到一条线上最近的坐标
- javascript - 日期差异在 JavaScript 中无法正常工作
- excel - 仅删除纸张保护
- ios - 如何为 UITableViewCell 的 textLabel 和 detailTexLabel 设置约束
- django - Django ValueError:“图像”属性没有与之关联的文件
- c++ - 散列文件是否也考虑其数字签名?
- blockchain - Corda Enterprise 在运行测试用例时为自定义模式抛出“net.corda.core.node.services.VaultQueryException”
- c# - 在 Sitefinity 站点中限制来自后端的文档路径
- android - TextSymbol 中未显示阿拉伯文本
- azure - 无法用于 HDinsight 的 U-Sql