public class nulltoemptystringresolver : defaultcontractresolver { /// <summary> /// 创建属性 /// </summary> /// <param name="type">类型</param> /// <param name="memberserialization">序列化成员</param> /// <returns></returns> protected override ilist<jsonproperty> createproperties(type type, memberserialization memberserialization) { return type.getproperties() .select(x => { var property = createproperty(x, memberserialization); property.valueprovider = new nulltoemptystringvalueprovider(x); return property; }).tolist(); } /// <inheritdoc /> /// <summary> /// 小写 /// </summary> /// <param name="propertyname"></param> /// <returns></returns> protected override string resolvepropertyname(string propertyname) { return propertyname.tolower(); } }
public class nulltoemptystringvalueprovider : ivalueprovider { private readonly propertyinfo _memberinfo; /// <summary> /// 构造函数 /// </summary> /// <param name="memberinfo"></param> public nulltoemptystringvalueprovider(propertyinfo memberinfo) { _memberinfo = memberinfo; } /// <inheritdoc /> /// <summary> /// 获取value /// </summary> /// <param name="target"></param> /// <returns></returns> public object getvalue(object target) { var result = _memberinfo.getvalue(target); if (_memberinfo.propertytype == typeof(string) && result == convert.dbnull) { result = string.empty; } return result; } /// <inheritdoc /> /// <summary> /// 设置value /// </summary> /// <param name="target"></param> /// <param name="value"></param> public void setvalue(object target, object value) { _memberinfo.setvalue(target, value); } }
如对本文有疑问, 点击进行留言回复!!
Github:07---git之(git的回溯(git reset)、合并冲突、修改提交信息、压缩历史(git rebase))
Pytorch 结合Sobel滤波的卷积操作来提取图像的轮廓图!
让Sublime Text3 支持 Markdown 且可以实时预览
荐 2020最全前端面试系列(浏览器原理)(最容易忽视的面试隐藏大杀器)
网友评论