/// <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(); } }
/// <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; } }