コード例 #1
0
        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);
        }