CostCalculationItem/IRaCIS.Core.API/Utility/NullToEmptyStringValueProvi...

76 lines
2.4 KiB
C#

using System;
using System.Reflection;
using Newtonsoft.Json.Serialization;
namespace IRaCIS.Core.API
{
//public class NullToEmptyStringValueProvider : IValueProvider
//{
// private readonly JsonProperty _memberInfo;
// /// <summary>
// /// 构造函数
// /// </summary>
// /// <param name="memberInfo"></param>
// public NullToEmptyStringValueProvider(JsonProperty memberInfo)
// {
// _memberInfo = memberInfo;
// }
// /// <summary>
// /// 获取Value
// /// </summary>
// public object GetValue(object target)
// {
// var result = _memberInfo.DefaultValue;
// if (_memberInfo.PropertyType == typeof(string) && result == null)
// {
// result = string.Empty;
// }
// else if (_memberInfo.PropertyType == typeof(double?) && result == null)
// {
// result = 0;
// }
// else if (_memberInfo.PropertyType == typeof(double?) && result == null)
// {
// result = 0;
// }
// return result;
// }
// /// <summary>
// /// 设置Value
// /// </summary>
// public void SetValue(object target, object value)
// {
// //_memberInfo.SetValue(target, value);
// _memberInfo.DefaultValue = value;
// }
//}
public class NullToEmptyStringValueProvider : Newtonsoft.Json.Serialization.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(String[]) && result == null) result = new string[] { };
else if (_MemberInfo.PropertyType == typeof(Nullable<Int32>) && result == null) result = 0;
else if (_MemberInfo.PropertyType == typeof(Nullable<Decimal>) && result == null) result = 0.00M;
return result;
}
public void SetValue(object target, object value)
{
_MemberInfo.SetValue(target, value);
}
}
}