private static void CloneProperties()

in src/PowerShell/Extensions/ResourceExtensions.cs [51:63]


        private static void CloneProperties<TInput, TOutput>(TOutput output, TInput input) where TOutput : class, new()
        {
            foreach (PropertyInfo prop in output.GetType().GetRuntimeProperties())
            {
                if (input.GetType().GetRuntimeProperty(prop.Name) != null &&
                    prop.CanWrite &&
                    !typeof(ICollection).IsAssignableFrom(prop.PropertyType) &&
                    prop.PropertyType.IsAssignableFrom(input.GetType().GetRuntimeProperty(prop.Name).PropertyType))
                {
                    prop.SetValue(output, input.GetType().GetRuntimeProperty(prop.Name).GetValue(input));
                }
            }
        }