43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
using System;
 | 
						|
using System.Reflection;
 | 
						|
using Newtonsoft.Json.Serialization;
 | 
						|
 | 
						|
namespace IRaCIS.Core.API
 | 
						|
{
 | 
						|
 | 
						|
    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(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)
 | 
						|
        {
 | 
						|
 | 
						|
            if(_MemberInfo.PropertyType == typeof(string))
 | 
						|
            {
 | 
						|
                //去掉前后空格
 | 
						|
                _MemberInfo.SetValue(target, value==null?string.Empty: value.ToString()==string.Empty? value:value.ToString().Trim());
 | 
						|
              
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                _MemberInfo.SetValue(target, value);
 | 
						|
            }
 | 
						|
          
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
}
 |