/// <summary>
        ///     Ctor.
        /// </summary>
        /// <param name="beanEventType">target type</param>
        /// <param name="properties">written properties</param>
        /// <param name="importService">for resolving write methods</param>
        /// <throws>EventBeanManufactureException if the write method lookup fail</throws>
        public EventBeanManufacturerBeanForge(
            BeanEventType beanEventType,
            WriteablePropertyDescriptor[] properties,
            ImportService importService
        )
        {
            _beanEventType = beanEventType;
            _properties = properties;
            _importService = importService;

            _beanInstantiator = BeanInstantiatorFactory.MakeInstantiator(beanEventType, importService);

            _writeMembersReflection = new MemberInfo[properties.Length];

            _primitiveType = new bool[properties.Length];
            for (var i = 0; i < properties.Length; i++) {
                _writeMembersReflection[i] = properties[i].WriteMember;
                _primitiveType[i] = properties[i].PropertyType.IsValueType && properties[i].PropertyType.CanNotBeNull();
            }
        }
Exemple #2
0
        /// <summary>
        /// Ctor.
        /// </summary>
        /// <param name="jsonEventType">target type</param>
        /// <param name="properties">written properties</param>
        /// <param name="importService">for resolving write methods</param>
        /// <throws>EventBeanManufactureException if the write method lookup fail</throws>
        public EventBeanManufacturerJsonProvidedForge(
            JsonEventType jsonEventType,
            WriteablePropertyDescriptor[] properties,
            ImportService importService)
        {
            _jsonEventType = jsonEventType;
            _properties    = properties;
            _importService = importService;

            _beanInstantiator = new BeanInstantiatorForgeByNewInstanceReflection(jsonEventType.UnderlyingType);

            _writeFieldReflection = new FieldInfo[properties.Length];

            _primitiveType = new bool[properties.Length];
            for (var i = 0; i < properties.Length; i++)
            {
                var propertyName = properties[i].PropertyName;
                var field        = jsonEventType.Detail.FieldDescriptors.Get(propertyName);
                _writeFieldReflection[i] = field.OptionalField;
                _primitiveType[i]        = properties[i].PropertyType.IsPrimitive;
            }
        }