74 lines
2.3 KiB
C#
74 lines
2.3 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using Hncore.Infrastructure.Common;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using Newtonsoft.Json.Serialization;
|
|||
|
|
|
|||
|
|
namespace Hncore.Infrastructure.Serializer
|
|||
|
|
{
|
|||
|
|
public class NullToEmptyStringResolver : DefaultContractResolver
|
|||
|
|
{
|
|||
|
|
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
|
|||
|
|
{
|
|||
|
|
return type.GetProperties()
|
|||
|
|
.Select(p =>
|
|||
|
|
{
|
|||
|
|
var jp = base.CreateProperty(p, memberSerialization);
|
|||
|
|
jp.ValueProvider = new NullToEmptyStringValueProvider(p);
|
|||
|
|
return jp;
|
|||
|
|
}).ToList();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class NullToEmptyStringValueProvider : IValueProvider
|
|||
|
|
{
|
|||
|
|
PropertyInfo _MemberInfo;
|
|||
|
|
|
|||
|
|
public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
|
|||
|
|
{
|
|||
|
|
_MemberInfo = memberInfo;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public object GetValue(object target)
|
|||
|
|
{
|
|||
|
|
object result = _MemberInfo.GetValue(target);
|
|||
|
|
if (_MemberInfo.PropertyType == typeof(string) && result == null)
|
|||
|
|
{
|
|||
|
|
result = "";
|
|||
|
|
}
|
|||
|
|
else if ((_MemberInfo.PropertyType == typeof(DateTime) || _MemberInfo.PropertyType == typeof(DateTime?)) &&
|
|||
|
|
result != null)
|
|||
|
|
{
|
|||
|
|
if (result.ToString() == "0001/1/1 0:00:00" || result.ToString() == "1000/1/1 0:00:00")
|
|||
|
|
{
|
|||
|
|
result = DateTimeHelper.SqlMinTime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
DateTime time = Convert.ToDateTime(result);
|
|||
|
|
|
|||
|
|
if (time == DateTimeHelper.SqlMaxTime || time == DateTimeHelper.SqlMinTime || time == DateTime.MaxValue ||
|
|||
|
|
time == DateTime.MinValue)
|
|||
|
|
{
|
|||
|
|
result = "";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (_MemberInfo.PropertyType.Name == "List`1" && result == null)
|
|||
|
|
{
|
|||
|
|
result = new List<object>();
|
|||
|
|
}
|
|||
|
|
else if (_MemberInfo.PropertyType.Name == "Object" && result == null)
|
|||
|
|
{
|
|||
|
|
result = new { };
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void SetValue(object target, object value)
|
|||
|
|
{
|
|||
|
|
_MemberInfo.SetValue(target, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|