|  | @@ -64,21 +64,31 @@ namespace MediaBrowser.Controller.Entities
 | 
	
		
			
				|  |  |          where T : BaseItem
 | 
	
		
			
				|  |  |          where TU : BaseItem
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            var sourceProps = typeof(T).GetProperties().Where(x => x.CanRead).ToList();
 | 
	
		
			
				|  |  | -            var destProps = typeof(TU).GetProperties()
 | 
	
		
			
				|  |  | -                    .Where(x => x.CanWrite)
 | 
	
		
			
				|  |  | -                    .ToList();
 | 
	
		
			
				|  |  | +            var destProps = typeof(TU).GetProperties().Where(x => x.CanWrite).ToList();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            foreach (var sourceProp in sourceProps)
 | 
	
		
			
				|  |  | +            foreach (var sourceProp in typeof(T).GetProperties())
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                if (destProps.Any(x => x.Name == sourceProp.Name))
 | 
	
		
			
				|  |  | +                // We should be able to write to the property
 | 
	
		
			
				|  |  | +                // for both the source and destination type
 | 
	
		
			
				|  |  | +                // This is only false when the derived type hides the base member
 | 
	
		
			
				|  |  | +                // (which we shouldn't copy anyway)
 | 
	
		
			
				|  |  | +                if (!sourceProp.CanRead || !sourceProp.CanWrite)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    var p = destProps.First(x => x.Name == sourceProp.Name);
 | 
	
		
			
				|  |  | -                    p.SetValue(dest, sourceProp.GetValue(source, null), null);
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +                var v = sourceProp.GetValue(source);
 | 
	
		
			
				|  |  | +                if (v == null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                var p = destProps.Find(x => x.Name == sourceProp.Name);
 | 
	
		
			
				|  |  | +                if (p != null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    p.SetValue(dest, v);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
	
		
			
				|  | @@ -93,7 +103,5 @@ namespace MediaBrowser.Controller.Entities
 | 
	
		
			
				|  |  |              source.DeepCopy(dest);
 | 
	
		
			
				|  |  |              return dest;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |