修改了下clone方法
This commit is contained in:
		
							parent
							
								
									1918c13112
								
							
						
					
					
						commit
						606469692e
					
				@ -20,14 +20,15 @@ namespace Falcon.SugarApi
 | 
			
		||||
        /// <typeparam name="TSource">原对象类型</typeparam>
 | 
			
		||||
        /// <param name="source">原对象</param>
 | 
			
		||||
        /// <param name="target">目标对象</param>
 | 
			
		||||
        public static TSource CloneTo<TSource>(this TSource source,[NotNull] object target) where TSource : class {
 | 
			
		||||
        /// <param name="ignoreCase">忽略大小写。默认false不忽略大小写</param>
 | 
			
		||||
        public static TSource CloneTo<TSource>(this TSource source,[NotNull] object target,bool ignoreCase = false) where TSource : class {
 | 
			
		||||
            _ = source ?? throw new ArgumentNullException(nameof(source));
 | 
			
		||||
            _ = target ?? throw new ArgumentNullException(nameof(target));
 | 
			
		||||
            var all = from s in source.GetType().GetProperties()
 | 
			
		||||
                      join t in target.GetType().GetProperties() on s.Name equals t.Name
 | 
			
		||||
                      join t in target.GetType().GetProperties()
 | 
			
		||||
                      on ignoreCase ? s.Name.ToLower() : s.Name equals ignoreCase ? t.Name.ToLower() : t.Name
 | 
			
		||||
                      select new { s,t };
 | 
			
		||||
            foreach(var item in all) {
 | 
			
		||||
                //item.t.SetValue(target, Convert.ChangeType(item.s.getValue(source), item.t.Type));
 | 
			
		||||
                item.t.SetValue(target,item.s.GetValue(source).ChangeType(item.t.PropertyType));
 | 
			
		||||
            }
 | 
			
		||||
            return source;
 | 
			
		||||
@ -39,9 +40,10 @@ namespace Falcon.SugarApi
 | 
			
		||||
        /// <typeparam name="Ttarget">目标对象类型</typeparam>
 | 
			
		||||
        /// <param name="target">目标对象</param>
 | 
			
		||||
        /// <param name="source">原对象</param>
 | 
			
		||||
        /// <param name="ignoreCase">忽略大小写。默认false不忽略大小写</param>
 | 
			
		||||
        /// <returns>目标对象</returns>
 | 
			
		||||
        public static Ttarget CloneFrom<Ttarget>(this Ttarget target,object source) where Ttarget : class {
 | 
			
		||||
            source.CloneTo(target);
 | 
			
		||||
        public static Ttarget CloneFrom<Ttarget>(this Ttarget target,object source,bool ignoreCase = false) where Ttarget : class {
 | 
			
		||||
            source.CloneTo(target,ignoreCase);
 | 
			
		||||
            return target;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user