private void SetPropertyValue(PropertyDescriptor classProperty, object value) { IConversionProvider conversionProvider = GetConversionProvider(classProperty); if (conversionProvider != null) { classProperty.SetValue(_message, conversionProvider.Convert(value)); } else { Type propertyType = classProperty.PropertyType; if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) { propertyType = propertyType.GetGenericArguments().First(); } // ReSharper disable AssignNullToNotNullAttribute classProperty.SetValue(_message, Convert.ChangeType(value, propertyType, CultureInfo.InvariantCulture)); // ReSharper restore AssignNullToNotNullAttribute } }