private object GetDynamicEditorTypeForObject(object input, List <PropertyEditor> propertyEditors) { var inType = input.GetType(); if (!_dynamicTypeMappings.TryGetValue(inType, out var outType)) { outType = DynamicTypeBuilder.CreateTypeForEditor(input, propertyEditors); _dynamicTypeMappings[inType] = outType; } var @out = Activator.CreateInstance(outType); var props = outType.GetProperties().ToDictionary(p => p.Name); foreach (var pe in propertyEditors) { var p = props[pe.Property]; p.SetValue(@out, pe.Value); } return(@out); }