Beispiel #1
0
        public void Initialize(Type concreteType, IGenericMapperConfiguration config)
        {
            // Get JSON accessor
            var jsonColumn = typeof(IGenericColumns).GetProperty(config.JsonColumn);

            _jsonAccessor = ReflectionTool.PropertyAccessor <IGenericColumns, string>(jsonColumn);

            var baseProperties       = typeof(TBase).GetProperties().Select(p => p.Name).ToArray();
            var configuredProperties = config.PropertyConfigs.Select(cm => cm.PropertyName);

            var readOnlyProperties = concreteType.GetProperties()
                                     .Where(p => p.GetSetMethod() == null).Select(p => p.Name).ToArray();

            // The json should not contain base, configured nor readonly properties
            var jsonIgnoredProperties = baseProperties
                                        .Concat(configuredProperties)
                                        .Concat(readOnlyProperties).ToArray();

            _jsonSettings = JsonSettings.Minimal
                            .Overwrite(j => j.ContractResolver = new DifferentialContractResolver <TReference>(jsonIgnoredProperties));

            // Properties where no mapper should be created for: base and read only properties
            var mapperIgnoredProperties = baseProperties
                                          .Concat(readOnlyProperties).ToArray();

            _configuredMappers = config.PropertyConfigs.Where(pc => !mapperIgnoredProperties.Contains(pc.PropertyName))
                                 .Select(pc => MapperFactory.Create(pc, concreteType)).ToArray();
        }
        public void Initialize(Type concreteType, IGenericMapperConfiguration config)
        {
            // Get JSON accessor
            var jsonColumn = typeof(IGenericColumns).GetProperty(config.JsonColumn);

            JsonAccessor = ReflectionTool.PropertyAccessor <IGenericColumns, string>(jsonColumn);

            var baseProperties = typeof(TBase).GetProperties()
                                 .Select(p => p.Name);
            var configuredProperties = config.PropertyConfigs.Select(cm => cm.PropertyName);
            var ignoredProperties    = baseProperties.Concat(configuredProperties).ToArray();

            _jsonSettings = JsonSettings.Minimal
                            .Overwrite(j => j.ContractResolver = new DifferentialContractResolver <TReference>(ignoredProperties));

            _configuredMappers = config.PropertyConfigs.Select(pc => MapperFactory.Create(pc, concreteType)).ToArray();
        }